日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转: seajs手册与文档之 -- 模块标识

發布時間:2023/11/29 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转: seajs手册与文档之 -- 模块标识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 模塊標識
    • 相對標識
    • 頂級標識
    • 普通路徑
  • 文件后綴的提示

模塊標識

模塊標識是一個字符串,用來標識模塊。在 require、 require.async 等加載函數中,第一個參數都是模塊標識。define 函數的 dependencies 參數也是由模塊標識組成。

SeaJS 中的模塊標識是 CommonJS 模塊標識 的超集:

  • 一個模塊標識由斜線("/")分隔的多項組成。
  • 每一項必須是小駝峰字符串、"." 或 ".."。
  • 模塊標識可以不包含文件后綴名,比如 ".js"。
  • 模塊標識可以是“相對”或“頂級”標識。如果第一項是 "." 或 "..",則該模塊標識是相對標識
  • 頂級標識根據模塊命名空間的根路徑來解析。 ~~相對base路徑?
  • 相對標識相對 require 所在模塊的標識來解析。 ~~相對當前模塊的URI?
  • 注意,符合上述規范的標識肯定是 SeaJS 的模塊標識,但 SeaJS 能識別的模塊標識不需要完全符合以上規范。 比如,除了大小寫字母組成的小駝峰字符串,SeaJS 的模塊標識字符串還可以包含下劃線和連字符, 甚至可以以 "http://"、"https://"、"file:///" 等協議標識開頭。

    相對標識

    相對標識只出現在模塊環境中,以 "." 開頭。會相對當前模塊的 URI 來解析:?

    // 在 http://example.com/js/a.js 中: require('./b');// => http://example.com/js/b.js

    頂級標識

    頂級標識不以點(".")或斜線("/")開始, 會相對 SeaJS 的 base 路徑來解析:

    // 假設 base 路徑是:http://example.com/js/libs/// 在模塊代碼里: require('jquery/1.7.1/jquery');// => http://example.com/js/libs/jquery/1.7.1/jquery.js

    base 路徑的默認值,與 sea.js 的路徑相關:~~~感覺seajs的路徑解析機制比requirejs的簡單,以 " . " 開始的相對路徑是相對當前模塊URI的,其他相對路徑是相對 base路徑的

    如果 sea.js 的路徑是:http://example.com/js/libs/sea.js ~~~base路徑默認為sea.js的URI 則 base 路徑為:http://example.com/js/libs/

    當 sea.js 路徑中含有版本號時,base 不會包含 seajs/x.y.z 字串。 當類庫模塊有多個版本時,這樣會更方便。

    如果 sea.js 的路徑是:http://example.com/libs/seajs/1.0.0/sea.js 則 base 路徑是:http://example.com/libs/

    當然,也可以手工配置 base 路徑:

    seajs.config({base: 'http://code.jquery.com/' });// 在模塊代碼里: require('jquery');// => http://code.jquery.com/jquery.js

    普通路徑

    除了相對和頂級標識之外的標識都是普通路徑。普通路徑的解析規則,和 HTML 代碼中的 script.src 一樣,會相對當前頁面來解析。

    // 在 http://example.com/js/main.js 中: require('http://example.com/js/a');// => http://example.com/js/a.js// 在 http://example.com/js/a.js 中: require('/js/b');// => http://example.com/js/b.js// 在任何代碼里: seajs.use('./c'); //~~~seajs.use的模塊標識 總是相對包含seajs頁面的路徑// => http://example.com/path/to/page/c.js

    seajs.use(ids, ...) 和 define(id, ...) 中的模塊標識始終是普通路徑,因為這兩個方法是在全局環境中執行的。

    文件后綴的提示

    除非在路徑中出現井號("#")或問號("?"),SeaJS 在解析模塊標識時, 都會自動添加 JS 擴展名(".js")。如果不想自動添加擴展名,最簡單的方法是, 在路徑末尾加上井號("#")。

    // ".js" 后綴可以省略: require('http://example.com/js/a'); require('http://example.com/js/a.js');// => http://example.com/js/a.js// ".css" 后綴不可省略: ~~~seajs可以直接加載css文件,requirejs加載css文件需要插件require-css require('http://example.com/css/a.css');// => http://example.com/css/a.css// 當路徑中有問號("?")時,不會自動添加后綴: require('http://example.com/js/a.json?callback=define');// => http://example.com/js/a.json?callback=define// 當路徑以井號("#")結尾時,不會自動添加后綴,且會在解析時,去掉井號: require('http://example.com/js/a.json#');// => http://example.com/js/a.json

    總結

    以上是生活随笔為你收集整理的转: seajs手册与文档之 -- 模块标识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。