前言
主要是了解后臺模塊使用requireJs怎么引用其他js
理解比較有限载庭,不足之處望指點
1.目錄
2.主入口文件
1-1.html文件位置(主入口)
-------'admin/view/common/script'
<script src="__CDN__/assets/js/require{$Think.config.app_debug?'':'.min'}.js" data-main="__CDN__/assets/js/require-backend{$Think.config.app_debug?'':'.min'}.js?v={$site.version}">
</script>
1-2.JS文件調(diào)用和初始化位置(主入口):
-------'require-backend.js'
主要參數(shù):
urlArgs:"v=" + requirejs.s.contexts._.config.config.site.version, //版本號
根路徑baseUrl:requirejs.s.contexts._.config.config.site.cdnurl + '/assets/js/', //資源基礎(chǔ)路徑
paths:參考require-backend.js
shim:參考require-backend.js
map: {
'*': {
'css': '../libs/require-css/css.min'
}
}
其他參數(shù)參照'require-backend.js'
該js文件主要作用:
1.初始化暴露配置
2.暴露全局語言包
3.默認加載依賴:'fast' ,'backend', 'backend-init', 'addons'等文件
4.牛逼之處:
//根據(jù)js文件名自動加載依賴和控制器
if (Config.jsname) {
require([Config.jsname], function (Controller) {
Controller[Config.actionname] != undefined && Controller[Config.actionname]();
}, function (e) {
console.error(e);
// 這里可捕獲模塊加載的錯誤
});
}
注意點:
在控制器章節(jié)我們有提到每個控制器都對應(yīng)一個JS模塊,控制器名稱和JS中模塊名稱是一一對應(yīng)的豁遭。
如:
以TP5--MVC模型為例
controller層:public function detail(){}
Js文件:var controller = { detail:function(){} }
JS語言包加載
requirejs.s.contexts._.config.xx.xx.xx 這個是直接把requirejs的對象暴露出來 0认病!蓖谢!主要是配置文件信息的讀任嬖獭!
requirejs.s.contexts._.config詳解
require.backend.js中
1.初始配置
var Config = requirejs.s.contexts._.config.config;
2.將Config渲染到全局
window.Config = Config;
3. 配置語言包的路徑
var paths = {};
paths['lang'] = Config.moduleurl + '/ajax/lang?callback=define&controllername=' + Config.controllername;
///模塊.php/ajax/lang?callback=define&controllername=控制器名
4.當您要將某些配置傳遞給所有模塊時使用闪幽。這些值是所有模塊的通用值--暴露配置語言包
require.config({paths: paths});
5.初始化fast.js,調(diào)用lang方法啥辨,根據(jù)C層去找語言包
lang: function () {
var args = argument
}
lang方法里沒有寫參數(shù)卻傳入了參數(shù),該如何拿到參數(shù)-->argument
6.在fast.js將語言方法暴露到全局中去
window.__ = Fast.lang;
7.require.backend.js初始化主文件加載
$(function () {
require(['fast'], function (Fast) {
});
});
使用方式:
HTML:{:__('')}
PHP/JS:__('')
JS-arguments講解
JS所有內(nèi)置對象屬性和方法匯總
使用栗子:
function format(string) {
var args = arguments;
console.log(arguments);
var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
return String(string).replace(pattern, function(match, index) {
return args[index];
});
};
format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
返回:“And the papers want to know whose shirt you wear”