Soumettre la recherche
Mettre en ligne
OPM
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
378 vues
G
goto100
Suivre
人人网静态项目管理工具OPM介绍
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 22
Télécharger maintenant
Recommandé
Mesos intro
Mesos intro
dennis zhuang
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生
dennis zhuang
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送
OpenRestyCon
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现
Lixun Peng
Google LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
Leveldb background
Leveldb background
宗志 陈
Recommandé
Mesos intro
Mesos intro
dennis zhuang
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生
dennis zhuang
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
基于OpenResty的百万级长连接推送
基于OpenResty的百万级长连接推送
OpenRestyCon
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
dennis zhuang
对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现
Lixun Peng
Google LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
Leveldb background
Leveldb background
宗志 陈
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用
ericpi Bi
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
Lixun Peng
kissy modularization part2
kissy modularization part2
yiming he
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
课题三:Nginx基础知识
课题三:Nginx基础知识
Liu Allen
How svn work_and_how_to_use
How svn work_and_how_to_use
Bin Feng
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
frogd
Node js实践
Node js实践
jay li
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Charlee Green
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Justin Lin
编辑器设计U editor
编辑器设计U editor
taobao.com
Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
Node分享 展烨
Node分享 展烨
tb-vertical-guide
Java_07:Thread
Java_07:Thread
Brad Chao
前端自動化工具
前端自動化工具
國昭 張
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang
Contenu connexe
Tendances
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
hugo
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用
ericpi Bi
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
Lixun Peng
kissy modularization part2
kissy modularization part2
yiming he
Maven & mongo & sring
Maven & mongo & sring
Tzu Chi University
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
课题三:Nginx基础知识
课题三:Nginx基础知识
Liu Allen
How svn work_and_how_to_use
How svn work_and_how_to_use
Bin Feng
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
frogd
Node js实践
Node js实践
jay li
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Charlee Green
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Justin Lin
编辑器设计U editor
编辑器设计U editor
taobao.com
Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
Node分享 展烨
Node分享 展烨
tb-vertical-guide
Java_07:Thread
Java_07:Thread
Brad Chao
Tendances
(20)
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
Ch03 請求與回應
Ch03 請求與回應
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用
RxJS 6 新手入門
RxJS 6 新手入門
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
kissy modularization part2
kissy modularization part2
Maven & mongo & sring
Maven & mongo & sring
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
课题三:Nginx基础知识
课题三:Nginx基础知识
How svn work_and_how_to_use
How svn work_and_how_to_use
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
Node js实践
Node js实践
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
移动搜索在慢网速下的优化
移动搜索在慢网速下的优化
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
编辑器设计U editor
编辑器设计U editor
Asp.net core v1.0
Asp.net core v1.0
Node分享 展烨
Node分享 展烨
Java_07:Thread
Java_07:Thread
Similaire à OPM
前端自動化工具
前端自動化工具
國昭 張
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang
合久必分,分久必合
合久必分,分久必合
Qiangning Hong
Docker初识
Docker初识
hubugui
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
静态项目管理工具 - opm
静态项目管理工具 - opm
goto100
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
Justin Lin
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
redhat9
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
Docker一期培训
Docker一期培训
青帅 常
Cloudstack dev/user sharing
Cloudstack dev/user sharing
gavin_lee
開發環境建置
開發環境建置
Shengyou Fan
Java类加载器
Java类加载器
Fu Cheng
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
Ant
Ant
Medivh2011
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Artifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
Similaire à OPM
(20)
前端自動化工具
前端自動化工具
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
合久必分,分久必合
合久必分,分久必合
Docker初识
Docker初识
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
静态项目管理工具 - opm
静态项目管理工具 - opm
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Docker一期培训
Docker一期培训
Cloudstack dev/user sharing
Cloudstack dev/user sharing
開發環境建置
開發環境建置
Java类加载器
Java类加载器
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Ant
Ant
10. 進入瀏覽器
10. 進入瀏覽器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Artifacts management with CI and CD
Artifacts management with CI and CD
OPM
1.
静态项目管理工具 - opm
Object project manager
2.
问题 •
文件颗粒度 – 维护性 • 网络请求数 – 性能 • 互斥 • 解决方法:合并,增加编译过程
3.
项目管理工具 •
有ant/maven等 • 处理依赖 • 构建项目 • 文档、单元测试等等
4.
一个典型的前端项目 • https://github.com/jquery/jquery • https://github.com/joyent/node
5.
opm介绍 • 一个类似于ant/maven的代码构建工具,一
个控制台程序 • 一个类似于apt-get/yum的代码(包含依赖) 获取工具,搭配一个可自行搭建的代码中 央库服务器 • 可通过设置静态服务器代理实现实时的动 态编译 • 可与mercurial结合实现中央库的自动编译发 布
6.
• 与人人网业务无关 • 完全开源 •
http://staticcompiler.googlecode.com/
7.
一个opm项目 •
一个template-config.xml文件 • doc目录 - 项目文档 • lib目录 - 相关依赖库 • res目录 - 资源文件(图片、flash) • test目录 - 测试 • src目录 - 项目源代码
8.
库 • 前端静态“库”,包括css/js/图片/swf等静态资源 • 严格区分“源库”与“发布库” •
每个源库可选一个唯一标识,格式一个url • 保持每个库的独立性,不通过路径进行依赖, 通过唯一标识处理依赖 • 源库中只存在最小粒度的源文件 • 通过init命令初始化一个源库 • template-config.xml 标识一个库
9.
库 • 一个源库可以对应多个发布库 • 一个发布库对应一个源库 •
对于源库,发布库是无形的,源库不保存 发布库的任何信息 • 源库与发布库之间通过link命令进行连接, 有两种连接方式,本地连接和标识连接
10.
本地连接 • 本地连接,发布库中直接保存了源库的本
地路径 • 优点:无需工作区支持 • 缺点:每个开发人员都需要自己通过link命 令建立连接;无法处理依赖 • 用于:独立、临时性的小项目
11.
标识连接 • 标识连接,发布库中保存了源库的唯一标
识 • 优点:只需项目创建者建立一次连接;有 工作区支持,可以处理项目依赖 • 缺点:需要工作区支持 • 处理依赖 – 工作区
12.
工作区 • 一个包含了多个库的磁盘目录 • 一个工作区中的多个库可以通过库的唯一
标识进行依赖,不通过磁盘路径进行依赖 • 保证一个库在一个工作区中只存在一份代 码,实现一处编写,处处编译。 • 通过load命令加载、初始化工作区
13.
编写template-config.xml • 源库的配置文件 • 根
package,属性url指定其唯一标识 • source/library/resource 元素,每个元素对应 一个目录,通过dir属性指定目录名,一般 为src/lib/res • 以后还会有document/test等
14.
library的磁盘映射机制 • 通过指定依赖库的唯一标识,将依赖库的
文件“映射”至当前库的磁盘路径上 • 映射后的路径可在配置文件combine/include 中使用,也可以在css文件中使用
15.
JS文件的合并 - combine •
每个combine标识一个合并文件 • 合并文件在文件系统上的地位与最小颗粒 度文件相同,即也可以被别的文件再次合 并,实现多级合并 • 依赖库的文件也一视同仁 • 同样的,最小颗粒度的非合并文件也可以 作为发布文件进行发布 • 发布库中的发布文件名与源库中相同
16.
CSS文件的合并 - import •
IE著名的import bug,且会增加网络请求数, 没有人使用这个特性 • 发布库支持针对不同浏览器发布不同的文 件,添加 -ie6-min/-ie7-min/-std-min/-all-min 等后缀(开发中) • 因此,发布库中的发布文件名为源库文件 名加入 -all-min 后缀,比如 core.css 对应 core-all-min.css。
17.
发布目录结构 • 永远不要直接修改发布目录的文件,因为
修改了源文件后,发布文件会被覆盖 • 发布目录中存在一个.template-info目录用于 存放源库路径、编译状态等临时文件
18.
安装步骤 • http://code.google.com/p/staticcompiler/wiki
/HowToSetup • Python • flup • opm • nginx • 配置nginx
19.
命令介绍 •
get – 从公共代码库获取源代码 • init – 初始化一个新库 • compile – 编译一个css/js文件 • publish – 将整个发布库进行编译 • link -将发布库与源库进行映射 • load – 加载本地工作区 • serve – 启动一个可实时编译的静态服务器 • packages/workspace/root/source/status/libs/incs
20.
opm serve • 实现动态实时编译的核心 •
在本机运行一个http server,将所有对发布 库css/js发布文件的请求监听,发现源文件 有修改则编译后返回发布文件
21.
22.
The End
weibo.com: @宇义 mail: goto100@gmail.com
Télécharger maintenant