我在使用browserify时遇到了一些麻烦。
我正在尝试使用Backbone构建基本的TodoMVC单页应用程序,而不仅仅是<script>
在我的标签堆中,而是index.html
尝试将它们全部与browserify捆绑在一起。
到目前为止,这就是我要做的。
lib /模型/todo.js
var backbone = require("backbone");
var Todo = module.exports = backbone.Model.extend({
defaults: function() {
return {
title: "",
completed: false,
createdAt: Date.now(),
};
},
});
lib /收藏/todo.js
var backbone = require("backbone"),
LocalStorage = require("backbone.localstorage");
var TodoCollection = module.exports = backbone.Collection.extend({
localStorage: new LocalStorage('todomvc'),
});
lib / app.js
var Todo = require("./models/todo"),
TodoCollection = require("./collections/todo");
(function(global) {
global.todoCollection = new TodoCollection([], {model: Todo});
})(window);
要构建我的捆绑包,我正在使用
browserify lib/app.js > js/app.js
最后,我index.html
很简单
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Todo MVC</title>
</head>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="/js/app.js"></script>
</body>
</html>
当我打开控制台并尝试运行此命令时
todoCollection.create({title: "My first todo"});
我得到一个错误
“无法读取未定义的属性’Deferred’”
堆栈跟踪
TypeError: Cannot read property 'Deferred' of undefined
at Backbone.LocalStorage.sync.window.Store.sync.Backbone.localSync (http://localhost:4000/js/app.js:182:47)
at Backbone.sync (http://localhost:4000/js/app.js:255:40)
at _.extend.sync (http://localhost:4000/js/app.js:1773:28)
at _.extend.save (http://localhost:4000/js/app.js:1979:18)
at _.extend.create (http://localhost:4000/js/app.js:2370:13)
at <anonymous>:2:16
at Object.InjectedScript._evaluateOn (<anonymous>:580:39)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:539:52)
at Object.InjectedScript.evaluate (<anonymous>:458:21)
我已经做了很多关于如何浏览器骨干应用程序的搜索,但是对于符合我的目标的事情我发现得很少。
如何将我的单页主干应用捆绑到app.js
html中可能需要的单个应用中?
作为旁白
我不确定我是否也正确包含了jQuery。如果Backbone也不属于我的浏览器捆绑包,它会很难将自己连接到jQuery?
任何提示,不胜感激。
编辑:
最新版本的jquery可通过npm分发和使用!这使得将jquery与browserify一起使用更加简单。
现在我们需要做的就是安装软件包:
npm install jquery backbone
并需要以下模块:
var $ = require('jquery');
var Backbone = require('backbone');
Backbone.$ = $;
旧答案:
我已经成功使用了jquery-browserify模块。
跑 npm install jquery-browserify backbone
在名为app-view.js的文件中创建视图模块:
var Backbone = require('backbone');
var $ = require('jquery-browserify');
Backbone.$ = $;
module.exports = Backbone.View.extend({
initialize: function(){
this.render();
},
render: function(){
console.log('wuuut')
$('body').prepend('<p>wooooooooooooooo</p>');
}
});
使用模块:
var AppView = require('./app-view')
var appView = new AppView();
您可以像使用代码一样将jquery保留在脚本标记中,而不是使用jquery-browserify,但是在这种情况下,可以使用以下方法:
var $ = require('jquery-browserify');
Backbone.$ = $;
我会这样做:
var $ = Backbone.$ = window.$;
在上,使用require ex调用所有库。 并生成一个包含jquery的bundle
null 支持与平台无关的应用程序图标 支持对JAR的自动更新 运行my.jar时对JRE参数的支持 Linux支持(.deb或.rpm)
我最近不得不考虑一个新的软件的部署方法,它是用以下代码编写的: 雀巢6/Express 该软件将部署在160多台服务器上,分布在整个欧洲,其中一些服务器的互联网连接非常糟糕。 我做了一些研究,很多人明确建议不要捆绑销售。主要的论点是本机扩展将失败与捆绑器,如或(剧透:这是真的,但有一个解决方案)。在我看来,这在很大程度上是由于人们不关心这个事实:的作者在这个用例中使用了几乎相同的词。所以通常,我被
我正在将我的spring-java项目转移到OSGi。 我有一些依赖项,这些依赖项在spring ebr repo或maven repo中不能作为包提供。处理它们的最佳方法是什么? null
我刚刚启动了一个新的应用程序,但当我点击欢迎登船页面上的“关于您的应用程序的环境”链接时,会出现这个错误。 启动应用程序时出错当Pow试图运行时,您的Rack应用程序引发了异常。 Bundler::,但找不到任何源代码 我的应用正在运行: 轨道3.2。6 Ruby 1.9。3p194 Rubygems 1.8。24 RVM 1.14。5 战俘0.4。0 我发现了类似的问题,问题在于如何让乘客安静下
我对一个难以捉摸但可能非常强大的DropWizard特性Bundles感到好奇。根据文件: Dropwizard捆绑包是一组可重用的功能,用于定义应用程序的行为块。 鉴于DropWizard(DW)的文档非常丰富,我感到震惊的是,这实际上是对bundle的唯一解释。我在野外看到了一些这样的例子: 资产组合 但我不明白的是:bundle似乎只是在jar中进行代码打包和分发。那么,为什么我不能编写“原