ash*_*ley 40 express angularjs
我经历过许多Angular-express种子,并且研究了它们的工作方式.我遇到的问题是:1).我想用ejs-locals进行模板化.2).如何正确配置服务器端和客户端的路由.而且,在输入URL时/about,不要生成错误:cannot /get
angular app.js包含:
// angular stuff
$routeprovider.when('/', {
templateUrl: 'index',
controller: IndexCtrl
});
$routeprovider.when('/about', {
templateUrl: 'partials/about',
controller: IndexCtrl
});
Run Code Online (Sandbox Code Playgroud)
快递app,js包含:
app.get('/', routes.index);
app.get('/about', routes.about);
Run Code Online (Sandbox Code Playgroud)
routes文件夹包含'index.js':
exports.index = function(req, res){
res.render('index',{name:"Hello"});
};
exports.about = function (req, res) {
res.render('partials/about');
};
Run Code Online (Sandbox Code Playgroud)
Views文件夹包含index.ejs:
<!--HTML head/navigation bar here-->
<div ng-view></div>
Run Code Online (Sandbox Code Playgroud)
和inside views文件夹是一个partials文件夹:(Views/partials /)
index.ejs:
<h1>Index</h1>
Run Code Online (Sandbox Code Playgroud)
about.ejs:
<h1>About</h1>
Run Code Online (Sandbox Code Playgroud)
jai*_*ime 30
将这些路由添加到您的快速服务器
app.get('/partials/:filename', routes.partials);
app.use(routes.index);
Run Code Online (Sandbox Code Playgroud)
然后进去 routes.js
exports.partials = function(req, res){
var filename = req.params.filename;
if(!filename) return; // might want to change this
res.render("partials/" + filename );
};
exports.index = function(req, res){
res.render('index', {message:"Hello!!!"});
};
Run Code Online (Sandbox Code Playgroud)
这将确保在向partials/index和发出请求时,express返回呈现模板partials/about.
这是一个要点:https://gist.github.com/4277025
我就是这样做的。我正在使用 Jade,但 Ejs 将是类似的:
应用程序.js
// Routes
app.get('/', routes.index);
app.get('/partials/:name', routes.partials);
Run Code Online (Sandbox Code Playgroud)
我的模板存储在/views/partials 中:
app.set('views', __dirname + '/views');
Run Code Online (Sandbox Code Playgroud)
在客户端,您现在可以使用 angular 的 $routeProvider 来加载部分:
/*global define */
define([
'angular',
'controllers/aController',
'controllers/bController'],
function (angular, aController, bController) {
'use strict';
return angular.module('controllers', [], ['$controllerProvider', '$routeProvider',
function ($controllerProvider, $routeProvider) {
$controllerProvider.register('AController', ['$scope', aController]);
$controllerProvider.register('BController', ['$scope', bController]);
// routes
$routeProvider.when('/A', {templateUrl: 'partials/A', controller: aController});
$routeProvider.when('/B', {templateUrl: 'partials/B', controller: bController});
$routeProvider.otherwise({redirectTo: '/A'});
}]);
}
);
Run Code Online (Sandbox Code Playgroud)
我在使用 jade 和 angular 时遇到了一些麻烦,这对我有用。
目录结构:
public
|-js
|-css
|-views
|-main
-main.jade
|-auth
-login.jade
server
|-includes
-layout.jade
|-views
-index.jade
server.js
Run Code Online (Sandbox Code Playgroud)
然后在 server.js 配置路由看起来像:
app.configure(function(){
app.set('views', __dirname + '/server/views');
app.set('view engine', 'jade');
})
// server side route for the partials files
app.get('/views/*', function(req, res){
res.render('../../public/views/' + req.params);
})
// everything handled by this route
app.get('*', function(req, res){
res.render('index');
})
Run Code Online (Sandbox Code Playgroud)
然后角度路线看起来像这样:
$routeProvider.when('/', {
templateUrl: '/views/main/main', // gets main.jade from server
controller: 'mainCtrl'
})
Run Code Online (Sandbox Code Playgroud)
我的index.jade看起来像这样:
extends ../includes/layout
block main-content
.navbar.navbar-inverse.navbar-fixed-top
div(ng-include="'/views/account/navbar-login'")
section.content
div(ng-view)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20916 次 |
| 最近记录: |