我找到了一个我希望能够包含在我的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
);
这似乎需要一个要求,但是我不是首先在浏览器中运行浏览器的全部原因吗?我在这里缺少什么?
答案 0 :(得分:0)
浏览器没有定义require方法,但Node.js确实如此。同 Browserify你可以用相同的方式编写使用require的代码 你会在Node中使用它。
Browserify的目的是在浏览器中为您提供模块系统,并允许您使用require
个文件。它非常有用,可以让您轻松地包含节点模块并模块化您自己的应用程序。
要使用您在Angular应用程序中引用的Node模块,您基本上可以完成演示在控制器或服务中显示的内容。就个人而言,我可能建议创建一个包装Node模块的服务,并公开与Yahoo Fantasy服务器交互的方法;我可能不会把它放在$scope
,除非你出于某种原因绝对不得不这样做。
这里有一些伪代码:
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'));
然后将其注入其他服务和控制器,并随心所欲地做任何事情。
答案 1 :(得分:0)
如果您要构建包含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
选项。