Soumettre la recherche
Mettre en ligne
编辑器设计U editor
•
Télécharger en tant que PPT, PDF
•
1 j'aime
•
3,125 vues
taobao.com
Suivre
Signaler
Partager
Signaler
Partager
1 sur 36
Télécharger maintenant
Recommandé
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
Berserk js
Berserk js
taobao.com
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
Kind editor设计思路
Kind editor设计思路
taobao.com
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
Recommandé
编辑器设计Kissy editor
编辑器设计Kissy editor
taobao.com
Berserk js
Berserk js
taobao.com
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Welefen Lee
Kind editor设计思路
Kind editor设计思路
taobao.com
第三方内容开发最佳实践
第三方内容开发最佳实践
taobao.com
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
taobao.com
淘宝开放产品前端实践
淘宝开放产品前端实践
taobao.com
前端MVVM框架安全
前端MVVM框架安全
Borg Han
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
Class 20170126
Class 20170126
Ivan Wei
Koa 正在等一個人
Koa 正在等一個人
Fred Chien
CP 值很高的 Gulp
CP 值很高的 Gulp
Yvonne Yu
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Simon Su
Node分享 展烨
Node分享 展烨
tb-vertical-guide
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Chu-Siang Lai
编辑器设计2
编辑器设计2
yiming he
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Will Huang
Web coding principle
Web coding principle
ZongYing Lyu
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
Node develop expirements
Node develop expirements
aleafs
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
wantingj
Taobao
Taobao
tranthuchuyen
Taobao vs. eBay - The battle within the Chinese eCommerce market
Taobao vs. eBay - The battle within the Chinese eCommerce market
Yannick Pinkinelli
Contenu connexe
Tendances
前端MVVM框架安全
前端MVVM框架安全
Borg Han
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
Class 20170126
Class 20170126
Ivan Wei
Koa 正在等一個人
Koa 正在等一個人
Fred Chien
CP 值很高的 Gulp
CP 值很高的 Gulp
Yvonne Yu
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Simon Su
Node分享 展烨
Node分享 展烨
tb-vertical-guide
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
Chu-Siang Lai
编辑器设计2
编辑器设计2
yiming he
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Will Huang
Web coding principle
Web coding principle
ZongYing Lyu
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
Node develop expirements
Node develop expirements
aleafs
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
wantingj
Tendances
(20)
前端MVVM框架安全
前端MVVM框架安全
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Class 20170126
Class 20170126
Koa 正在等一個人
Koa 正在等一個人
CP 值很高的 Gulp
CP 值很高的 Gulp
Maven & mongo & sring
Maven & mongo & sring
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Node分享 展烨
Node分享 展烨
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
编辑器设计2
编辑器设计2
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Web coding principle
Web coding principle
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
Node develop expirements
Node develop expirements
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
En vedette
Taobao
Taobao
tranthuchuyen
Taobao vs. eBay - The battle within the Chinese eCommerce market
Taobao vs. eBay - The battle within the Chinese eCommerce market
Yannick Pinkinelli
李成银:前端编译平台
李成银:前端编译平台
taobao.com
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
taobao.com
高力:19楼现有前端架构
高力:19楼现有前端架构
taobao.com
【前端测试】淘宝前端测试实践
【前端测试】淘宝前端测试实践
taobao.com
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
taobao.com
box model
box model
jay li
Steve Jobs Announces iTown - Douban Special Event, Jan 2012
Steve Jobs Announces iTown - Douban Special Event, Jan 2012
Dexter Yang
浅谈 Javascript 性能优化
浅谈 Javascript 性能优化
rainoxu
Linux 系列分享[1] 概览
Linux 系列分享[1] 概览
rainoxu
通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具
Dexter Yang
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)
Dexter Yang
Git 零基础介绍
Git 零基础介绍
Ethan Zhang
新版阿尔法城背后的前端MVC实践
新版阿尔法城背后的前端MVC实践
Dexter Yang
Walmart
Walmart
Aditya singh
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
zhangdaiping
Node way
Node way
Ethan Zhang
En vedette
(20)
Taobao
Taobao
Taobao vs. eBay - The battle within the Chinese eCommerce market
Taobao vs. eBay - The battle within the Chinese eCommerce market
李成银:前端编译平台
李成银:前端编译平台
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
高力:19楼现有前端架构
高力:19楼现有前端架构
【前端测试】淘宝前端测试实践
【前端测试】淘宝前端测试实践
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
box model
box model
Steve Jobs Announces iTown - Douban Special Event, Jan 2012
Steve Jobs Announces iTown - Douban Special Event, Jan 2012
浅谈 Javascript 性能优化
浅谈 Javascript 性能优化
Linux 系列分享[1] 概览
Linux 系列分享[1] 概览
通用JS时代的模块机制和编译工具
通用JS时代的模块机制和编译工具
Learning JavaScript in Three Web Apps(中文)
Learning JavaScript in Three Web Apps(中文)
Git 零基础介绍
Git 零基础介绍
新版阿尔法城背后的前端MVC实践
新版阿尔法城背后的前端MVC实践
Walmart
Walmart
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Web前端性能优化 2014
Web前端性能优化 2014
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
Node way
Node way
Similaire à 编辑器设计U editor
OPM
OPM
goto100
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
jay li
Fl介绍
Fl介绍
Welefen Lee
Comment System of 56.com
Comment System of 56.com
Ho Kim
前端开发工具 - 编辑器篇
前端开发工具 - 编辑器篇
keelii
合久必分,分久必合
合久必分,分久必合
Qiangning Hong
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
GitLab—the new workbench
GitLab—the new workbench
tblanlan
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
Pu Shiming
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
yang alex
Kindeditor 设计思路
Kindeditor 设计思路
luolonghao
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
Kindeditor设计思路v2
Kindeditor设计思路v2
luolonghao
Web development with zend framework
Web development with zend framework
thinkinlamp
Docker一期培训
Docker一期培训
青帅 常
白玉磊 Webrebuild
白玉磊 Webrebuild
裕波 周
石玉磊 Web rebuild
石玉磊 Web rebuild
Webrebuild
愛創小小聚201307 小強分享
愛創小小聚201307 小強分享
iTrEnD
Git 使用介绍
Git 使用介绍
medcl
Meteor
Meteor
Tencent
Similaire à 编辑器设计U editor
(20)
OPM
OPM
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
Fl介绍
Fl介绍
Comment System of 56.com
Comment System of 56.com
前端开发工具 - 编辑器篇
前端开发工具 - 编辑器篇
合久必分,分久必合
合久必分,分久必合
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
GitLab—the new workbench
GitLab—the new workbench
Gitlab - the new workbench (2nd edition)
Gitlab - the new workbench (2nd edition)
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
Kindeditor 设计思路
Kindeditor 设计思路
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
Kindeditor设计思路v2
Kindeditor设计思路v2
Web development with zend framework
Web development with zend framework
Docker一期培训
Docker一期培训
白玉磊 Webrebuild
白玉磊 Webrebuild
石玉磊 Web rebuild
石玉磊 Web rebuild
愛創小小聚201307 小強分享
愛創小小聚201307 小強分享
Git 使用介绍
Git 使用介绍
Meteor
Meteor
Plus de taobao.com
百度前端性能监控与优化实践
百度前端性能监控与优化实践
taobao.com
Java script physical engine
Java script physical engine
taobao.com
Html5环保小游戏
Html5环保小游戏
taobao.com
阅读类Web应用前端技术探索
阅读类Web应用前端技术探索
taobao.com
完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索
taobao.com
张平:JavaScript引擎实现
张平:JavaScript引擎实现
taobao.com
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考
taobao.com
刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践
taobao.com
前端Mvc探讨及实践
前端Mvc探讨及实践
taobao.com
黄希彤:【无障碍访问】Margin
黄希彤:【无障碍访问】Margin
taobao.com
何一鸣:【无障碍访问】Aria in taobao
何一鸣:【无障碍访问】Aria in taobao
taobao.com
西乔:理性的设计
西乔:理性的设计
taobao.com
杨永全:【组障碍访问】一个盲人眼中的网页内容无障碍体验与设计 大纲
杨永全:【组障碍访问】一个盲人眼中的网页内容无障碍体验与设计 大纲
taobao.com
More weapons, more power
More weapons, more power
taobao.com
无名小站首页改版 -渐进增强与css3
无名小站首页改版 -渐进增强与css3
taobao.com
【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践
taobao.com
【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatown
taobao.com
开放时代:从Web page到web app
开放时代:从Web page到web app
taobao.com
Plus de taobao.com
(18)
百度前端性能监控与优化实践
百度前端性能监控与优化实践
Java script physical engine
Java script physical engine
Html5环保小游戏
Html5环保小游戏
阅读类Web应用前端技术探索
阅读类Web应用前端技术探索
完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索
张平:JavaScript引擎实现
张平:JavaScript引擎实现
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考
刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践
前端Mvc探讨及实践
前端Mvc探讨及实践
黄希彤:【无障碍访问】Margin
黄希彤:【无障碍访问】Margin
何一鸣:【无障碍访问】Aria in taobao
何一鸣:【无障碍访问】Aria in taobao
西乔:理性的设计
西乔:理性的设计
杨永全:【组障碍访问】一个盲人眼中的网页内容无障碍体验与设计 大纲
杨永全:【组障碍访问】一个盲人眼中的网页内容无障碍体验与设计 大纲
More weapons, more power
More weapons, more power
无名小站首页改版 -渐进增强与css3
无名小站首页改版 -渐进增强与css3
【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践
【前端Mvc】mvc behind-alphatown
【前端Mvc】mvc behind-alphatown
开放时代:从Web page到web app
开放时代:从Web page到web app
编辑器设计U editor
1.
编辑器技术分享 百度前端工程师:战毅
2.
主题 • 现代富文本编辑器的组成要素 • UEditor
设计理念和架构介绍 • UEditor 核心功能点详解 • UEditor 后续作业
3.
编辑器组成要素
4.
编辑器组成要素 思考你认为的要素点有那些
5.
编辑操作
6.
• 浏览器原生提供的接口 •
实现: document.execCommand • 优势:代码小,速度快 • 缺点: bug 不可悾,功能少,兼容性差 • 项目: xheditor,kindeditor
7.
• 用 JS
实现原生接口 • 实现: dom Range • 优势: bug 可控,任意扩展,兼容性好 • 缺点:代码稍大,性能有损耗 • 项目: ueditor,ckeditor,tinymce
8.
• 用 JS
实现显示选区 • 实现: dom Range + html • 优势:展示可控, bug 可控,扩展随 意,兼容性可控 • 缺点:代码大,性能很差,准确性差 • 项目: google docs,weboffice
9.
状态反射
10.
• 定义 •
对于用户的各类操作,要在界面上给 与用户一个反馈,与用户产生交互
11.
• 实现 •
注册一系列原生事件 ( keydown,keyup,mouseup,mousedown 等),组合成 selectionchange 事件
12.
过滤机制
13.
• 对进入编辑器的内容进行过滤 • 对编辑器提交的内容进行过滤 •
实现 • 简单 html 字符串过滤输出 • 解析 html 成 nodeTree ,再进行过滤, 然后在解析回 html 输入
14.
键盘监听
15.
• 文字录入类型( 0-9
, a-z ) • 特殊功能键 ( ctrl,shift,alt,command,tab,enter,delete,b ackspace)
16.
UI 界面
17.
• dialog,tooltip,button,combox,dropmenu,to
olbar 等等
18.
UEditor 介绍
19.
设计背景 • 不同的产品线有着完全不同的展示风 格,需要不同的
ui 来支持 • 需要可控的底层代码 • 功能可以满足产品线
20.
整体架构
界面 UI (UI 组件,桥接 ) 组件 plugins ( 操作命令 , 提供功能 ) 核心 core (domRange,domUtils)
21.
目录结构 •
_examples 各种展示页面 • _src 是拆分的源码 • dialogs 是各种弹出窗口 • php 后台程序 • themes 样式 • third-party 第三方的插件 • editor_config.js 全局配置文件 • editor_all/min 是 src 下的所有整合文件
22.
编辑命令 •
execCommand • 针对当前选区执行操作命令 • queryCommandState • 根据当前选区返回执行命令的状态 • 1 执行过, 0 为执行, -1 不可执行 • queryCommandValue • 根据当前选区返回跟执行命令相关的值
23.
事件机制 • 通过注册事件,来影响编辑器的进程 • contentchange,selectionchange,afterpaste
24.
定制加载 •
所有功能都可以按需定 制打包下载 • 界面也可以定制画出 • http://ueditor.baidu.com/website/ipanel/panel.html#
25.
核心功能实现
26.
编辑命令
27.
html 语义化 • 是遍历
dom 树的准则 • 封装成 json 对象 • 可以查看 _src/core/dom/dtd.js
28.
domRange •
组成 • startContainer 开始所属的节点( element/textNode) • startOffset 在开始节点中的偏移位置 • endContainer 结束所属的节点( element/textNode) • endOffset 在结束节点中的偏移位置 • collapsed 闭合状态吗 • document range 所属的 document
29.
domRange •
实现加粗操作 • 做标记记录当前选区 • 从开始位置遍历 dom 树 • 遍历的过程中添加加粗标 签 • 遍历结束,通过标记选中 原来的选区
30.
domRange • 通过 domRange
来扩展我们操作节点的能 力
31.
过滤机制 • html 转换成
nodeTree( 补全和 dtd 修 正 ,word 内容过滤) • 对 nodeTree 进行过滤(黑白名单,节点 转换) • nodeTree 转换成 html
32.
状态反射 •
查询原则:只以选区的开始为基准(性能原 因) • 实现:取得开始节点和他的所有父亲节点一直 到 body 缓存起来,然后每个命令会查询缓存节 点树看是否跟自己有关 • 触发时机:鼠标点击,键盘操作(会稀释)
33.
键盘监控 • keydown,keyup 要分别监控处理
34.
后续作业
35.
• 公式编辑器(开发结束) • pad
版本 • minUeditor • 国际化(开发中)
36.
谢谢
QQ : 501656974 email : zhanyi01@baidu.com
Télécharger maintenant