JavaScript的模塊化開發(fā)框架Sea.js上手指南
Sea.js所有源碼都存放在 GitHub 上:https://github.com/seajs/examples,目錄結(jié)構(gòu)為:
examples/ |-- sea-modules 存放 seajs、jquery 等文件,這也是模塊的部署目錄 |-- static 存放各個(gè)項(xiàng)目的 js、css 文件 | |-- hello | |-- lucky | `-- todo `-- app 存放 html 等文件 |-- hello.html |-- lucky.html `-- todo.html
引入seajs主文件
<script src="js/sea.js"></script> <script type="text/javascript"> // seajs配置項(xiàng) seajs.config({ //設(shè)置基本的JS路徑(引用外部文件的根目錄) base:"./js", //設(shè)置別名(方便后面引用使用) alias:{ "jQuery":"jquery.js" }, //路徑配置(跨目錄調(diào)用或者目錄比較深時(shí)使用) paths: { 'jQuery': 'http://libs.baidu.com/jquery/2.0.0/' }, //設(shè)置文件編碼 charset:"utf-8", //預(yù)加載文件 preload:['jQuery'] }); // 引用主入口文件 seajs.use(['main','jQuery'],function(e,$){ //回調(diào)函數(shù) alert("全部加載完成"); }); </script>
seajs主入口文件(main)
define(function(require, exports, module) { // 主入口文件引入其他文件依賴 //var testReQ = require('index'); var testReQ = require.async('index',function(){ //異步加載回調(diào) alert("我是異步加載的index的回調(diào)函數(shù)"); }); // 運(yùn)行index釋放的接口方法 // testReQ.testInit(); // 運(yùn)行index釋放的接口方法(module) testReQ.textFun(); });
seajs依賴文件(index)
define(function(require, exports, module) { // 對(duì)外釋放接口 exports.testInit = function(){ alert("我是一個(gè)接口"); }; // 如果需要釋放大量接口,可以使用module var testObj = { name:"qiangck", sex:"man", textFun:function(){ alert("我是一個(gè)使用module.exports的對(duì)象方法"); } } // module.exports接收obj對(duì)象 module.exports = testObj; });
文件的加載順序
下面我們從 hello.html 入手,來瞧瞧使用 Sea.js 如何組織代碼。
在頁(yè)面中加載模塊
在 hello.html 頁(yè)尾,通過 script 引入 sea.js 后,有一段配置代碼:
// seajs 的簡(jiǎn)單配置 seajs.config({ base: "../sea-modules/", alias: { "jquery": "jquery/jquery/1.10.1/jquery.js" } }) // 加載入口模塊 seajs.use("../static/hello/src/main")
sea.js 在下載完成后,會(huì)自動(dòng)加載入口模塊。頁(yè)面中的代碼就這么簡(jiǎn)單。
模塊代碼
這個(gè)小游戲有兩個(gè)模塊 spinning.js 和 main.js,遵循統(tǒng)一的寫法:
// 所有模塊都通過 define 來定義 define(function(require, exports, module) { // 通過 require 引入依賴 var $ = require('jquery'); var Spinning = require('./spinning'); // 通過 exports 對(duì)外提供接口 exports.doSomething = ... // 或者通過 module.exports 提供整個(gè)接口 module.exports = ... });
上面就是 Sea.js 推薦的 CMD 模塊書寫格式。如果你有使用過 Node.js,一切都很自然。
- 在Html中使用Requirejs進(jìn)行模塊化開發(fā)實(shí)例詳解
- 使用requirejs模塊化開發(fā)多頁(yè)面一個(gè)入口js的使用方式
- 詳解JavaScript模塊化開發(fā)
- Seajs 簡(jiǎn)易文檔 提供簡(jiǎn)單、極致的模塊化開發(fā)體驗(yàn)
- JavaScript模塊化開發(fā)之SeaJS
- 了解Javascript的模塊化開發(fā)
- javascript 構(gòu)建模塊化開發(fā)過程解析
- 深入探尋seajs的模塊化與加載方式
- seajs和requirejs模塊化簡(jiǎn)單案例分析
- 基于RequireJS和JQuery的模塊化編程日常問題解析
- 基于RequireJS和JQuery的模塊化編程——常見問題全面解析
- JavaScript 模塊化開發(fā)實(shí)例詳解【seajs、requirejs庫(kù)使用】
相關(guān)文章
微信小程序中input標(biāo)簽詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了微信小程序中input標(biāo)簽詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05JavaScript?API?ResizeObserver使用示例
這篇文章主要為大家介紹了JavaScript?API?ResizeObserver的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07axios進(jìn)度條onDownloadProgress函數(shù)total參數(shù)undefined解決分析
這篇文章主要介紹了axios進(jìn)度條onDownloadProgress函數(shù)total參數(shù)undefined解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07微信小程序 數(shù)組中的push與concat的區(qū)別
這篇文章主要介紹了微信小程序 數(shù)組中的push與concat的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-01-01項(xiàng)目中使用TypeScript的TodoList實(shí)例詳解
這篇文章主要為大家介紹了項(xiàng)目中使用TypeScript的TodoList實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01