我仍然想尝试使用Yeoman和Express运行示例。
我尝试了以下内容并且工作“没问题”,但我仍然坚持合并路线。 (简化为可读性)
mkdir test
cd test
express
mkdir app
cd app
mkdir js
cd js
yeoman angular
然后我在Gruntfile.js中将“output:dist”更改为“output:../../ public”
现在,两台服务器都可以自行运行(例如yeoman服务器和节点app.js)。我现在也可以运行'yeoman build'来在min应用程序中将缩小的JS输出到/ public。
我对路线如何融合有点模糊?我想/ /拉起Angular路线而不是快速路线等.github上的angular-express-seed示例看起来还不错,但我仍然希望Yeoman集成到项目中。
任何建议将不胜感激。
答案 0 :(得分:23)
我会为yeoman + expressjs推荐这个结构:
mkdir app
cd app
yeoman angular
express .
所以你的目录树应该是这样的:
.
├── app
│ ├── 404.html
│ ├── favicon.ico
│ ├── index.html
│ ├── robots.txt
│ ├── scripts
│ │ ├── controllers
│ │ │ └── main.js
│ │ ├── vendor
│ │ │ ├── angular.js
│ │ │ ├── angular.min.js
│ │ │ ├── es5-shim.min.js
│ │ │ └── json3.min.js
│ │ └── yeoman-test.js
│ ├── styles
│ │ └── main.css
│ └── views
│ └── main.html
├── app.js
├── Gruntfile.js
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── user.js
├── test
│ ├── lib
│ │ └── angular-mocks.js
│ └── spec
│ └── controllers
│ └── main.js
├── testacular.conf.js
└── views
├── index.jade
└── layout.jade
您可以删除现在多余的public
目录(我们将从app
提供服务):
rm -rf public
现在在app.js
中,您需要更改哪个目录来提供静态文件。改变这一行:
app.use(express.static(path.join(__dirname, 'public')));
到此:
app.use(express.static(path.join(__dirname, 'app')));
这应该是关于它的。有一个注意事项,你现在有两个“索引”文件 - 一个在views/index.jade
,另一个在app/index.html
。删除app/index.html
目前打破了yeoman,所以我的建议是删除app/index.jade
的路由,然后编辑index.html
。
希望这有帮助!
答案 1 :(得分:8)
这是另一个略有不同的设置
yo angular
更新Gruntfile.js以将配置从“app”更改为“public”。
然后做
express .
打开app.js并确保没有像这样app.get('/',routes.index)的路由映射; 这样节点服务器实际上会提供index.html,这是运行“grunt服务器”时加载的同一文件。
现在继续删除公共目录,然后将app目录移动到公共
rm -rf public
mv app public
答案 2 :(得分:2)
这个项目似乎涵盖了所有需求(甚至可以选择支持MongoDB):https://github.com/DaftMonk/generator-angular-fullstack
我刚刚在本地试过它并且有效:
npm install -g generator-angular-fullstack
yo angular-fullstack [appname]
有关详细信息,请参阅GitHub页面。
答案 3 :(得分:1)
如果我有声誉,我会评论@btford的答案 -
只是想在express .
之后添加安装yo angular
将覆盖grunt创建的package.json文件,该文件会在@jjperezaguinaga报告时破坏grunt。
确保在安装express .
之前保存package.json的副本。然后将以下依赖项添加到原始package.json:
"dependencies" : {
"express": "3.3.4",
"jade": "*"
}
答案 4 :(得分:0)
我遇到了这个解决方案的麻烦: express仍然尝试加载index.jade而不是index.html,但如果我输入localhost:3000 / index.html express正确呈现。 我解决了从app.js中删除这一行的问题:
//app.get('/', routes.index);
希望这会有所帮助。感谢分享, d。
答案 5 :(得分:0)
以下是其他人之前建议的步骤汇编,但所有步骤都在编号中。这是基于版本:Yeoman 1.0.4&快递3.3.8。
1)创建项目目录并cd入其中
2)安装角度:
yo angular
(如果您没有以su身份登录,则需要运行接下来的两行)
bower install
sudo npm install
3)将package.json重命名为package_yo.json (所以它不会被快递'package.json的版本覆盖)
4)安装Express 表达-c less -Hs。 (或者你想要的任何其他明确的选择)
sudo npm install
5)删除Express的公共目录&将'public'更改为'app'以获取Express'app.js中的路径: app.use(require('less-middleware')({src:_ dirname +'/ app'})); app.use(express.static(path.join( _dirname,'app')));
6)删除express'默认路由(app.get('/',routes.index);) (现在express将使用angular的/ app文件夹中指定的路径
7)启动服务器 npm start
(那你应该看看Yeoman的欢迎页面:localhost:3000 /)