我有一个node.js应用程序,已经开发了几周时间。我想添加某些功能,如无限滚动,node.js中的包也需要angular.js。所以,我认为我会继续添加angular.js支持,以便可以通过angular.js页面提供一页(以及其他需要此类支持的页面)。
通过Internet提供的基本示例,我在/ views目录中创建了一个listAll.jade文件(我使用express-jade)。这是它的样子:
html(ng-app='demoapp')
head
title List All Entries!
link(href='//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css', rel='stylesheet')
script(src='http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js')
script(src='js/listAllEntries.js')
body(ng-controller='GetAllEntries')
div(ng-repeat='post in posts')
| {{post}}
然后在/ public / js目录下,我添加了一个listAllEntries.js文件,以下是其内容:
var express = require('express');
var angular = require("angular");
var app = angular.module('geniuses', []);
app.controller('GetAllGeniuses', [
'$scope',
function($scope){
// $scope.test = 'Hello world!';
console.log("Here?...")
$scope.posts = [
'post 1',
'post 2',
'post 3',
'post 4',
'post 5'
];
}]);
最后,将它们连接在一起,在index.js文件中(我已将app.js重命名为index.js)我这样做了:
app.use(express.static(__dirname + '/public'));
app.use('/listAllEntries',function(req, res){
res.render('listAllEntries', {});
});
但是,当我点击http://localhost:3001/listAllEntries时,我得到的只是{post}}在浏览器上。在.js文件中添加的console.log语句不会被打印,所以我假设没有加载js文件。
我已经查看了几乎所有的选项和查询,但无法解决这个问题。
答案 0 :(得分:2)
此时Angular不是一个同构框架(虽然Angular 2的目的是)。因此,目前,您无法require('angular')
并在服务器中呈现Angular模板。
相反,您可以通过常规脚本标记提供包含(a)Angular框架和(b)Angular应用程序的html文件(*.jade
)。当在浏览器中加载此html文件时,浏览器会运行您的Angular代码,您将看到console.log
。
要获取Angular应用的帖子,您需要使用$http
服务器来访问您的后端API(您的快速应用)。 API应该提供JSON,然后您的Angular应用程序将解析并添加到其模型($scope.posts
)。