Tag: backbone.js

Backbone.Marionette不承认Marionettefunction

我有以下的玉模板,包含链接到木偶(CDN)和所有的依赖关系,我已经检查,并按正确的顺序列出。 但是,下面的代码: extends layout block content h2 Characters and Portraits div(class="container") Portraits Loading… script(src="https://code.jquery.com/jquery-3.1.0.slim.min.js" integrity="sha256-cRpWjoSOw5KcyIOaZNo4i6fZ9tKPhYYb6i5T9RSVJG8=" crossorigin="anonymous") script(src="https://cdnjs.cloudflare.com/ajax/libs/json2/20150503/json2.min.js") script(src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js") script(src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js") script(src="https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/3.0.0/backbone.marionette.min.js") script. var CharacterTemplating = new Marionette.Application(); CharacterTemplating.on("start", function(){ console.log("Character Templating has started!"); }); CharacterTemplating.start(); 结果在这个错误: characters:5 Uncaught ReferenceError: Marionette is not defined 代码是从节点/快递服务器进程中提供的。 任何想法,我哪里错了? 更新:我检查了networkingstream量,看起来不像木偶库是由于某种原因被加载。 检查是否从其他地方加载它帮助… 更新:从另一个CDN加载依赖关系会导致Backbone.Marionette库出现在networkingstream量中,但现在我得到这个错误: backbone.marionette.min.js:19 Uncaught TypeError: Cannot use 'in' operator to […]

保留节点js中的响应值

在页面加载时,对于特定的路由(例如https://localhost:8000/home/index ),将调用一个服务,并将服务的响应呈现给客户端的页面。 在同一页面上,我有一个链接,popup一个Backbone.js模式,并从模式一个点击事件触发器命中另一个服务调用触发的另一个URL(例如https://localhost:8000/home/index2 )和该响应呈现给另一个html页面。 在同一个html页面上,我想显示一个从页面加载的第一个服务调用中获得的值。 但是,由于每次有两个不同的请求,我无法保留这个值。 因此,我甚至无法将第一个响应的值追加到请求对象,并再次使用它。

Node.js可重用的代码服务器客户端

我在Node.js上做了一些研发,到目前为止我还是喜欢它,我只是很好奇如何重新使用代码,以便在客户端和服务器之间有一些共享的代码。 这个需求的一个很好的例子就是我用npm安装的Backbone.js。 目前我有一个如下所示的目录: app.js public/ routes/ views/ node_modules/ tests/ 很明显,我使用express.js和所有我的客户端代码是在公用文件夹,其中css , images , js文件所在的位置。 那么我怎么能有一个骨干模型,我可以在服务器和后端使用它? 此外,我曾经使用JavaScript与AMD的Require.js为了结构和模块化我的应用程序,我习惯了它,我倾向于喜欢它我看到require.js可通过npm,但现在,我安装它我不是因为我曾经有过类似的东西,所以我在客户端如何使用它: <script data-main="js/main" src="js/libs/Require/require.js">但是因为require.js是通过npm安装它是不是在公共文件夹下,所以我看不到任何可能的方式来加载它。 谢谢

Backbone.js和与服务器的通信(检索改进的数据集)

在backbone.js,我的理解与服务器通信检索数据是多云的最好…我目前的困惑是: 使用集合时,可以通过模型从数据库中获取一组数据,并过滤掉不需要的结果。 我对此的担忧是,如果未经过滤的结果最终导致数百万的结果,那么这会减慢速度。 我知道这不应该是它的function,因为其他人使用backbone.js,我没有看到这个投诉。 问题:通过backbone.js,当您获取一组对象时,它将与哪个对象通信,以及如何传递variables来为该方法指定filter? 例如,调用get方法,该方法可以使用user_id返回具有关联的user_id的对象。 如果这不是正确的方法,请让我知道。 backbone.js如何与服务器进行通信的说明,它期望什么types的接口进行通信。 例子也是非常有帮助的。 任何帮助是极大的赞赏。

在手动更改路由后,mediator.user会丢失

我正在用护照本地身份validation构build一个单页面应用程序。 用户在app.post "/login"进行身份validation并返回。返回app.post "/login"后,我将其保存在Chaplin.mediator.user (如在facebook-example中所见)。 只要我不手动更改URL,一切正常,但是当我更改URL并按回车键时,应用程序会被重新加载,但使用不同的路由 – >前端没有用户。 我现在正在做的是每次我手动改变路由,我发送一个请求到服务器,并要求req.user用户。 收到用户后,应用程序继续其工作stream程。 它的工作原理,但我不认为这是如此。 如果您不等待响应,则最终没有用户对象,尽pipe您已login。 我怎么解决这个问题? 编辑:我结束了保存用户在一个单独的cookie。 这是我如何保存用户: $.cookie.json = true; $.cookie 'user', user.toJSON() 这是我加载页面后如何提取用户: userCookie = $.cookie 'user' if userCookie? mediator.user = new Model JSON.parse userCookie 你需要使用jquery-cookie插件来使其工作。 如果用户注销,请不要忘记删除Cookie。 当然,我对其他想法仍然持开放态度。

用快递和骨干pipe理会话

我想使用来自express.js的会话,我知道我们可以从req.session.id中获得一个会话ID,而且我也知道这个ID总是不同的(每次我们访问一个路由): 我看到一些人build议在全球范围内获取和保存会话,但问题是(除非我错了),如果我保存会话,当用户连接我的应用程序这种方式: app.get('/init', function(req, res) { global.session = req.session; }); 如果User_1连接我的应用程序,那么User_2连接我的应用程序和User_1仍然存在,那么global.session将包含User_2会话的值,即使对于User_1也是如此? 如果我是对的,如何正确保存会话? 我想到了一个由init路由中的req.session.id索引的数组,但是因为即使同一个用户访问相同的路由(这是否正常?),它总是不同的,这是不可能的。 您发现pipe理会话的最佳方式是什么? 谢谢 !

用Node.js和async.queue插入大的CSV到MongoDB中

我试图上传并插入大的csv文件(100K行,10-100M +)到mongo。 下面的代码是我用来从表单接受input的路由,并将logging首先插入到我的所有csv的元数据集合中,然后将csv的logging插入到它自己的集合中。 它适用于较小的文件(成千上万行),但当它达到50K +的顺序时花费太长。 下一个片段是使用csvstream来处理较大的文件(请参阅下文),但是在尝试使用stream时遇到错误。 问题:有人可以帮助将第一个示例修改为stream,以便它可以处理大型csv而不会挂起。 exports.addCSV = function(req,res){ var body = req.body; fileSystem.renameSync(req.files.myCSV.path, 'uploads/myFile', function(err){ if(err){ fileSystem.unlink(req.files.myCSV.path, function(){}); throw error; } }); var myObject = { userid: body.userid, name: body.name, description: body.description }; var MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://localhost:27017/csvdb', function(err, db){ if(err) throw err; var collection = db.collection('myCSVs'); collection.insert(myObject, function(err, insertedMyObject){ csvParser.mapFile('uploads/myFile', function(err, allRows){ […]

在初始页面加载时引导数据

以下代码( server.js和app.js )在Lynda.com的教程中用于引导Backbone和Node.js Web应用程序中的数据。 通过获取对根文件夹app.get('/')请求,您可以看到它正在从json文件中导出的项目上调用JSON.stringify (所以它不使用数据库作为示例)。 前端文件app.js似乎对节点提供的data项调用app.menuItems.reset({{{ data }}}) 。 我有一个关于这个问题没有解释的教程 1)如果节点正在提供初始get请求的data ,为什么还需要调用app.menuItems.reset({{{ data }}}) ? get请求是否不需要将数据提供给前端? 请让我知道,如果你需要看到更多的代码。 我认为这个问题可以通过关于引导的一般知识来回答,而不需要看到例如app.menuItems。 server.js items = require('./data/menu-items'); //static json file var app = express() .use(express.bodyParser()) .use(express.static('public')); app.get('/', function (req, res) { res.render('index.hbs', {data: JSON.stringify(items)}); }); app.js <script type="text/javascript" src="js/app.js"></script> <script type="text/javascript"> app.menuItems.reset({{{data}}}); </script>

ParseError:带有Browserify和模板文件的意外标记

我正在开发一个使用Backbone的网站,并且我已经运行Watchify来捆绑应用程序。 一切工作正常的JavaScript模块,但我有问题的.hbs模板,处理模板文件时Watchify抛出parsing错误。 这些都是非常简单的模板,有问题的模板只包含这个html: <p>Hello world!</p> <ul id="menu"> </ul> 我已经安装了hbsfy,因此调用它: watchify ./app/main.js -t hbsfy -o static/js/bundle.js -v 错误返回: /home/***/***/backbone_app/app/node_modules/templates/layout.hbs:1 <p>Hello world!</p> ^ ParseError: Unexpected token 我已经阅读了文档,并在网上查了几个地方,老实说,在这里看不到我做错了什么。 感谢您提供的任何见解。

模块针对浏览器和nodejs模式

主干和下划线在浏览器和nodejs都可用。 他们使用以下模式: (function(){ // The top-level namespace. All public Backbone classes and modules will // be attached to this. Exported for both CommonJS and the browser. var Backbone; if (typeof exports !== 'undefined') { Backbone = exports; } else { Backbone = this.Backbone = {}; } // … })(); 这是实现这个目标的最好方法吗?