5
什麼是最好的方法是包括像jQuery或Knockout的公共庫擴展名爲Browserify?正確的方式來需要擴展與browserify
例如,對於類似knockout-switch-case
的項目,全局變量ko
(敲除)不會傳遞給模塊定義調用。
爲敲除的switch-case的AMD代碼是:
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['knockout'], factory);
} else {
// Browser globals
factory(root.ko);
}
}(this, function(ko) {
在那裏它應該ko
(敲除)是上root
一個全球性的,這將通常是window
但使用Browserify當它是Object {}
。
我曾嘗試使用browserify-shim
與像這樣的例子,但預計它沒有工作(雖然它沒有爲knockout-mapping工作,具有較好的模塊舞):
knockout:
path: VENDOR_PATH + '/knockout.js'
exports: 'ko'
depends:
jquery: '$'
我覺得好像我必須忽略一些必須非常明顯的東西,因爲我預計這將是一個相當常見的模塊定義模式,用於包含任何jQuery,Knockout或任何其他依賴於全局的庫的擴展。或者也許這是一個相當具體的問題敲除開關案例正在做。
無論如何,想法和意見真誠讚賞。
您需要勻場淘汰賽' - 開關case'而不是KO本身,以便嘗試類似這樣的方式:'shim(browserify(),{'{{'{}} {''敲除開關案例':{ path:'./js/vendor/knockout-switch-case.js' ,exports:null ,取決於: {knockout:'ko'} } })' – nemesv