【发布时间】:2017-06-23 22:57:50
【问题描述】:
我正在开发一个“简单”的网站来帮助提高一些技能。我已经有一年多没有使用 MEAN 堆栈了,我似乎对 Node/Express 部分与 Angular 框架的结合有点生疏了。我被告知要试用 UI-Router,因为它有助于我的项目的主要目标是能够为大约 15 个 URL 重用产品“模板”,因为我的页面将填充来自 JSON 的属性值包含产品信息的文件,例如名称、描述、图像等。
我只使用 nodemon 来提供我的 server.js 文件,但是当我转到 localhost:9000 时,dev-tools 中的源选项卡没有显示完整的文件树。我做错了什么?
这是我的设置:
节点/快递 server.js
// set up
var express = require('express');
var app = express();
var port = process.env.PORT || 9000;
var apiRoutes = require('./app/routes.js');
app.use(express.static(__dirname + '/public/'));
app.use('/node_modules', express.static('/node_modules'));
// routes
app.use('/', apiRoutes);
// launch
app.listen(port);
apiRoutes.js
var apiRouter = require('express').Router();
var express = require('express');
apiRouter.get('/', function (req, res, next){
res.sendFile('index.html', {root: './public/html'})
});
// Exports
module.exports = apiRouter;
角度 app.js
angular.module(‘myApp’,['ui.router','ngResource']);
app_routes.js
angular.module(‘myApp’)
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider){
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url : '/',
templateUrl : '/index.html',
controller : 'controller_index'
})
.state('product', {
url : '/:id',
templateUrl : '/template_product.html',
controller : 'controller_prods'
});
$locationProvider.html5Mode(true)
}]);`
shell.html(包含我的导航和页脚以及内部特定的 URL 视图)
<html ng-app=“myApp”>
<body ng-controller="controller_shell">
<Nav goes here>
</nav>
<ui-view></ui-view>
</body>
<footer>
</footer>
index.html(在主 URL www.myapp.com 上加载内容)
<main>
<div> all the stuff </div>
</main>
template_product.html(动态加载shell里面的内容)
<main>
<div> all the stuff </div>
</main>
我对 Grunt 不够熟悉,无法进行构建过程,所以我目前有 nodemon server.js 正在运行和服务。现在,当我转到 localhost:9000 时,它只加载 index.html 的内容,但不会从 shell.html 加载所有脚本/css/依赖项
【问题讨论】:
-
首先,index.html 应该是服务器在未指定页面时加载的“默认”页面,因此为您的视图命名不是一个好主意。相反,shell.html 的内容应该是 index.html 中的内容,而视图应该是其他内容(main.html、home.html 或其他内容)。