摘要:相關(guān)依賴有和其余都是單元測試相關(guān)依賴注意,這里使用了。因?yàn)槭褂每蚣苤С趾褪褂檬菫榱嗽趩卧獪y試?yán)锩媸褂玫暮偷日Z法。腳本其中生成目錄的文件執(zhí)行單元測試編譯的編譯的在中,會根據(jù)去設(shè)置不同的入口文件。
環(huán)境搭建
Omi框架使用 Webpack + ES6 的方式去開發(fā);使用karma+jasmine來作為Omi的測試工具。
Karma介紹Karma是一個(gè)基于Node.js的JavaScript測試執(zhí)行過程管理工具(Test Runner)。該工具可用于測試所有主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其他代碼編輯器一起使用。這個(gè)測試工具的一個(gè)強(qiáng)大特性就是,它可以監(jiān)控(Watch)文件的變化,然后自行執(zhí)行。但是集成到travis ci要把singleRun設(shè)置成true,讓其只執(zhí)行一遍。
Jasmine介紹Jasmine 是一款 JavaScript BDD(行為驅(qū)動開發(fā))測試框架,它不依賴于其他任何 JavaScript 組件。它有干凈清晰的語法,讓您可以很簡單的寫出測試代碼。
開發(fā)依賴包在package.json中,有如下配置:
"devDependencies": { "babel-core": "^6.0.20", "babel-loader": "^6.0.1", "babel-preset-es2015": "^6.0.15", "node-libs-browser": "^0.5.3", "webpack": "^1.14.0", "jasmine-core": "^2.5.2", "karma": "^1.3.0", "karma-chrome-launcher": "^2.0.0", "karma-jasmine": "^1.1.0", "karma-webpack": "^1.8.1" }
ES6+相關(guān)依賴有babel-core、babel-loader和babel-preset-es2015
在webpack.config.js中配置js文件使用babel-loader編譯。
loaders: [ { loader: "babel-loader", test: /.js$/, query: { presets: "es2015", } } ]
webpack相關(guān)依賴有node-libs-browser和webpack
其余都是單元測試相關(guān)依賴
注意,這里使用了karma-webpack。因?yàn)槭褂肙mi框架支持ES6+和ES5,使用karma-webpack是為了在單元測試?yán)锩媸褂肊S6+的import和Class等語法。
在karma.conf.js中配置webpack:
webpack: webpackConfig, webpackMiddleware:{ noInfo:false }, plugins: [ "karma-webpack", "karma-jasmine", "karma-chrome-launcher" ]
具體配置看test目錄下的karma.conf.js和webpack.test.config.js便可。
注意,karma.conf.js需要設(shè)置
// if true, Karma captures browsers, runs the tests and exits singleRun: true,
不然,travis ci腳本執(zhí)行的時(shí)候不會中斷導(dǎo)致執(zhí)行超時(shí)異常。
npm 腳本"scripts": { "build": "webpack -w", "test": "karma start test/karma.conf.js", "hello": "webpack -w", "todo": "webpack -w" }
其中:
npm run build : 生成dist目錄的omi.js文件
npm run test : 執(zhí)行單元測試
npm run hello : 編譯hello的demo
npm run todo : 編譯todo的demo
在webpack.config.js中,會根據(jù) process.env.npm_lifecycle_event去設(shè)置不同的入口文件。所以同樣是執(zhí)行webpack -w,執(zhí)行結(jié)果可以不一樣。
來看下build的相關(guān)webpack配置:
if(ENV === "build"){ config = { entry: { omi: "./src/index.js" }, output: { path: "dist/", library:"Omi", libraryTarget: "umd", filename: "[name].js" },
這里把libraryTarget設(shè)置成了umd,webpack會幫助我們build出umd的Omi。
如果是打包demo(npm run hello 和 npm run todo)的話,會進(jìn)入下面的條件判斷:
else { config.entry = "./example/" + ENV + "/main.js"; config.output.path = "./example/" + ENV + "/"; }
會去example下對應(yīng)的目錄查找main.js作為webpack入口文件。
這里可以看到,我們不僅用webpack build出Omi框架,也使用webpack build所有demo。
詳細(xì)配置參考webpack.config.js的配置。
http://www.cnblogs.com/cqhaibin/p/5867125.html
https://karma-runner.github.io/latest/intro/installation.html
https://karma-runner.github.io/latest/intro/configuration.html
招募計(jì)劃Omi的Github地址https://github.com/AlloyTeam/omi
如果想體驗(yàn)一下Omi框架,請點(diǎn)擊Omi Playground
如果想使用Omi框架,請閱讀 Omi使用文檔
如果想一起開發(fā)完善Omi框架,有更好的解決方案或者思路,請閱讀 從零一步步打造web組件化框架Omi
關(guān)于上面的兩類文檔,如果你想獲得更佳的閱讀體驗(yàn),可以訪問Docs Website
如果你懶得搭建項(xiàng)目腳手架,可以試試Scaffolding for Omi,npm安裝omis便可
如果你有Omi相關(guān)的問題可以New issue
如果想更加方便的交流關(guān)于Omi的一切可以加入QQ的Omi交流群(256426170)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81447.html
摘要:注意,這里目前沒有引入,不管第幾次渲染都是無腦設(shè)置,復(fù)雜結(jié)構(gòu)對瀏覽器的開銷很大,這里后續(xù)會引入。整合這里把給直接暴露在下,因?yàn)槊總€(gè)組件都生成了唯一的,后續(xù)實(shí)現(xiàn)事件作用域以及對象實(shí)例獲取都要通過下的獲取。 Hello Omi Omi框架的每個(gè)組件都繼承自O(shè)mi.Component,本篇會去完成Omi的Component的基本錐形,讓其能夠渲染第一個(gè)組件。 omi.js實(shí)現(xiàn) var Omi...
摘要:不用擔(dān)心組件的會污染組件外的會幫你處理好一切更自由的更新,每個(gè)組件都有方法,自由選擇時(shí)機(jī)進(jìn)行更新。通過安裝點(diǎn)擊這里在線試試你可以使用來生成組件標(biāo)簽用于嵌套。點(diǎn)擊這里試試寫程序加入吧 Omi Open and modern framework for building user interfaces. Omi的Github地址https://github.com/AlloyTeam/o...
閱讀 1374·2019-08-30 15:55
閱讀 1655·2019-08-26 10:21
閱讀 3447·2019-08-23 18:28
閱讀 3383·2019-08-23 15:38
閱讀 753·2019-08-23 15:24
閱讀 2143·2019-08-23 13:59
閱讀 785·2019-08-23 11:31
閱讀 2875·2019-08-23 10:53