簡體   English   中英

運行browserify后引用node_module

[英]Reference node_module after running browserify

我找到了一個我希望能夠包含在Angular應用中的nodejs模塊。 我環顧四周,發現可以通過在上面運行browserify來做到這一點。 完成此操作后,我已在html中引用了新文件,但此后我不知道該怎么辦。 我需要在哪里引用它才能獲得角度范圍? 這是我希望能夠訪問的github倉庫

https://github.com/whatadewitt/yfsapi

瀏覽器中的node_modules文件夾中的文件后,我有一個大的js文件。 在Node中的用法是

var YahooFantasy = require('yahoo-fantasy');
// you can get an application key/secret by creating a new application on Yahoo!
var yf = new YahooFantasy(
               Y!APPLICATION_KEY,
               Y!APPLICATION_SECRET
);

似乎這里需要一個條件,但這不是我首先運行browserify的全部原因嗎? 我在這里想念什么?

Browserify網站

瀏覽器沒有定義require方法,但是Node.js有。 使用Browserify可以編寫使用require的代碼,就像在Node中使用它一樣。

Browserify的目的是為您提供瀏覽器中的模塊系統,並允許您require文件。 它非常有用,可讓您輕松包含Node模塊並模塊化自己的應用程序。

要使用您在Angular應用中引用的Node模塊,基本上可以完全完成演示在控制器或服務中顯示的內容。 就個人而言,我可能建議創建一個包裝Node模塊並公開與Yahoo Fantasy服務器進行交互的方法的服務。 除非出於某些原因您絕對必須這樣做,否則我可能不會將它放在$scope上。

這是一些偽ish代碼:

var yf = require('yahoo-fantasy');

function YFantasyService (<dependencies>) {
  this.someMethod = function () {
    return yf.doStuff();
  }
}

YFantasyService.$inject = [<dependencies>];

module.exports = YFantasyService;

注冊您的服務(這是我的應用程序的結構...還有許多其他方式可以編寫和注冊服務,但是您可以理解):

angular.module('YFantasyApp', [<dependencies>])
  .service('YFantasyService', require('./YFantasyService'));

然后將其注入其他服務和控制器中,並隨心所欲地對其進行處理。

如果您要構建一個包含yahoo-fantasy的捆綁軟件-以便可以在對現有代碼進行最少更改的情況下使用它-您可以使用Browserify API:

var browserify = require("browserify");

browserify()
    .require("yahoo-fantasy", { expose: "yahoo-fantasy" })
    .bundle()
    .pipe(process.stdout);

這將生成一個包含yahoo-fantasy模塊及其所有依賴項的捆綁包,並將公開一個全局的require函數,您可以調用該函數來訪問所述模塊:

<!doctype html>
<html>
<head>
    <title>so-40120643</title>
</head>
<body>
    <script src="./bundle.js"></script>
    <script>
        console.log(require("yahoo-fantasy"));
    </script>
</body>
</html>

如果要為全局require函數使用其他名稱,則可以使用Browserify的externalRequireName選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM