CEF是一個簡單的Chrome Extension開發腳手架,它有以下功能:javascript
- dist // 發佈文件夾 - scripts - lib // 庫文件夾 jquery.js - module // 模塊 - your module event.js // 事件監聽 module.js // 模塊功能 view.js // 模板 app.js model.js run.js - style deploy.js // 發佈腳本 manifest.json
注:本項目默認使用jQuery做爲dom selectorhtml
在module文件夾裏建立Module文件夾,如:demo。接着在demo文件夾裏建立module.js,event.js和view.js,java
注:這3個文件並非必須的,根據狀況添加。好比,該模塊並不須要模板,因此view.js就能夠不要node
在module.js中添加以下代碼:jquery
App.module.extend('demo', function() { // this.init = function() { // todo. }; });
extend的第一個參數爲模塊名,若是加載了該模塊,能夠在module, event, view裏直接使用this.module.demo
調用。
init方法爲初始化方法,模塊加載的時候即會執行。git
接着添加一個方法:github
App.module.extend('demo', function() { // this.init = function() { // todo. }; this.hello = function() { console.log('Module demo hello.'); }; });
以下調用hello方法:chrome
this.module.demo.hello();
在demo文件夾下的view.js裏添加以下代碼:npm
App.view.extend('demo', function() { this.hello = function() { return ` <div class="ces-view-example"> <h1>CES View Example</h1> <div>Hi, {{ data['name'] }}</div> </div> `; }; });
同Module,extend第一個參數爲view名稱,hello方法返回一段html模板代碼。view對象有3個方法,分別是:json
function getView(name, method, data) {}
它有3個參數:
調用demo的hello方法:
let html = this.view.getView('demo', 'hello', {name: 'CEF'});
將會獲得:
<div class="ces-view-example"> <h1>CES View Example</h1> <div>Hi, CEF</div> </div>
這兩個方法很明顯,輸出HTML到指定位置用的,參數相同
function display(name, method, data, target) {}
它們有4個參數,前3個同getView,最後的target即爲目錄對象,由於本項目使用了jQuery,因此這裏是jQuery對象
調用:
this.view.display('demo', 'hello', {name: 'CEF'}, $('#xxx'));
// 變量附值 {{ var v = 1; }} // 變量輸出 {{ v }} // 條件 {{ if v === 1 }} // todo. {{ else }} // todo. {{ end }} // 循環 {{ var list = [1, 2] }} {{ for var i in list }} {{ list[i] }} {{ end }} // 調用其它模板 {{ var v = this.view.getView(); }} // 渲染模板 {{ v }}
在demo文件夾的event.js裏添加以下代碼:
App.event.extend('demo', function() { this.event = { listenExample: function() { // listen event } } });
和以前同樣,只是event只有一個默認的對象,this.event,當event.js被加載的時候,系統會自動執行this.event裏的全部方法,不須要再手動執行監聽了。
在event.js裏一樣可使用this.module
和this.view
來調用module或view,但建議只調用module,渲染的工做交到它。
發佈腳本能夠去除項目目錄下不須要的文件夾和文件,將對js文件進行壓縮混淆。命令以下:
node deploy.js
不須要發佈的文件夾或文件,不須要壓縮混淆的文件能夠在deploy.js裏配置
let excludes = { 'copy': [ '.gitignore', '.DS_Store', 'builder.js', 'package.json', 'package-lock.json', 'README.md', '.git', '.idea', 'node_modules', 'dist' ], 'mini': [ ] };
其中excludes.copy爲不須要發佈的文件夾和文件,mini爲不須要壓縮混淆的文件
發佈執行完成後,文件輸出到dist文件夾,只須要將dist目錄打包,上傳Chrome Extension Store便可。
目前新增Module裏的文件須要手動添加到manifest.json或是html文件裏,後續會增長編譯自動執行。由於考慮到可能的因素過多, 配置的代理可能會很是多,因此手動添加是目前比較好的處理方式。