如何将节点模块导入我的backbone.js应用程序?

时间:2014-02-18 21:52:03

标签: javascript node.js backbone.js requirejs

我正试图围绕node.js模块,require以及如何在backbone.js应用程序中使用模块。

现在我正在使用一个以代码开头的快速服务器:

var express = require('express'),
http = require('http'),
config = require("./config"),
oauth = require("oauth"),
bcrypt = require("bcrypt"),
sqlite = require("sqlite3"),
_ = require("underscore"),
exec = require('child_process').exec,


app = express(),
server = http.createServer(app).listen( process.env.PORT || config.port);

然后我有一个router.js文件,它定义了所有视图和模型。

config.js 文件如下所示:

require.config({

baseUrl: '/',

paths: {
    'util'                : 'assets/lib/util',
    'jquery'              : 'assets/lib/jquery',
    'underscore'          : 'assets/lib/underscore',         
    'backbone'            : 'assets/lib/backbone'
},

shim: {
    'underscore'          : { exports  : '_' },
    'backbone'            : { deps : ['underscore', 'jquery'], exports : 'Backbone' },
    'bootstrap'           : { deps : ['jquery'], exports : 'Bootstrap' },
    'parsley'             : { deps: ['jquery'] },
    'socket'              : { deps : ['underscore', 'jquery'], exports : 'socket' }
}

});

require(['main']);

我的router.js 文件就像这样开始(我拿了一堆代码)

define(['app','jquery','underscore','backbone',], function(app, $, _, Backbone){

var WebRouter = Backbone.Router.extend({

  routes: {
    "":     "index"
  },

  initialize: function(options) {

  }

return WebRouter;
});

我只需要输入我的 main.js 文件以获得良好的衡量标准

require([
"app",
"router",
"models/SettingsModel"
],
function(app, WebRouter, SettingsModel) {

// Just use GET and POST to support all browsers
Backbone.emulateHTTP = true;

app.router = new WebRouter();

Backbone.history.start({ pushState: true, root: app.root });

});

好的,现在这里是棘手的部分。我想使用节点模块,特别是https://github.com/BoyCook/TwitterJSClient

中的twitter-js-client模块

所以在我的TwitterView.js中,我可以运行以下代码:

var twitter = new Twitter(config);

我尝试过的步骤

  • 将twitter-js-client放入我的package.json,运行npm install,安装得很好,但我不知道如何访问该模块
  • 手动运行npm install twitter-js-client,由于上述原因无法运行
  • 手动将关键字“twitter”链接到npm模块的Twitter.js文件
    • 这有效,但后来我收到一个错误,例如“节点模块oauth尚未加载但使用_ .require for context”
    • 我注意到在twitter.js文件中,它需要许多软件包,包括oauth

我对Node / backbone有点新,我正在寻找澄清Node,Require和Backbone如何与彼此协作的说明。如果有人对如何构建这个应用程序有任何提示或建设性的批评,我将不胜感激。如果有任何解决方案在骨干视图中加载NPM模块,我将非常感激。我需要一个像凉亭一样的包管理器吗?我对Jquery和下划线没有任何问题,但我似乎无法加载这个npm模块。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用browserify

  • 使用require语句编写客户端脚本。

    var Twitter = require('twitter').Twitter;
    
  • 针对您的脚本运行browserify以生成单个bundle.js文件

  • 在页面上包含生成的文件。

    <script src="bundle.js"></script>