【问题标题】:How can I import a node module into my backbone.js app?如何将节点模块导入我的主干.js 应用程序?
【发布时间】:2014-02-18 21:52:02
【问题描述】:

我正在尝试围绕 node.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;
});

我将把我的 ma​​in.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 尚未加载,尚未使用 _. 上下文要求”
    • 我注意到在 twitter.js 文件中,它需要包括 oauth 在内的许多包

我对 Node/backbone 有点陌生,我正在寻找有关 Node、Require 和 Backbone 如何相互配合的说明。如果有人对如何构建此应用程序有任何提示或建设性的批评,我将不胜感激。如果有任何解决方案可以在主干视图中加载 NPM 模块,我将非常感激。我需要像 bower 这样的包管理器吗?我对 Jquery 和下划线没有任何问题,但我似乎无法加载这个 npm 模块。

谢谢!

【问题讨论】:

    标签: javascript node.js backbone.js requirejs


    【解决方案1】:

    您可以使用browserify

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

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

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

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

    【讨论】:

    • 我非常感谢这个建议,但我仍然卡住了。节点模块有一个名为 index.js 的文件,它链接到需要 Oauth 和 qs 的 Twitter.js 我试过 browserify /node_modules/twitter-js-client/index.js -o bundle.js 但我得到一个“oauth”尚未加载上下文
    • 你推荐我应该在哪个文件中添加 Twitter 对象?
    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 2021-09-05
    • 2020-06-01
    • 2021-05-25
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多