ExpressJS内的Yeoman
我仍然想尝试使用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'来将快捷的JS输出到/ public中。
我对路线如何合并有点模糊? 我想/拉起Angular路线,而不是快速路线等等.Github上的angular度expression种子例子看起来没问题,但我仍然希望将Yeoman融入到项目中。
任何build议,将不胜感激。
我会推荐这个结构yeoman + expressjs:
mkdir app cd app yeoman angular express .
所以你的dir树应该是这样的:
. ├── 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')));
这应该是关于它。 有一个careat,你现在有两个“索引”文件 – 一个在views/index.jade
,另一个在app/index.html
。 删除app/index.html
目前打破了yeoman,所以我的build议是摆脱app/index.jade
的路线,只是编辑index.html
。
希望这可以帮助!
这是另一个稍微不同的设置
yo angular
更新Gruntfile.js将configuration从“app”更改为“public”。
然后做
express .
打开app.js并确保没有像这样的app.get('/',routes.index); 这样节点服务器实际上会提供index.html,这是运行“grunt server”时加载的文件。
现在继续,删除公共目录,然后将应用程序目录移动到公共
rm -rf public mv app public
这个项目似乎涵盖了所有的需求(甚至有对MongoDB的可选支持): https : //github.com/DaftMonk/generator-angular-fullstack
我刚刚在本地尝试,它的工作原理:
npm install -g generator-angular-fullstack yo angular-fullstack [appname]
有关更多信息,请参阅GitHub页面。
如果我有信誉,我会评论@btford的回答,
只是想补充说安装express .
在yo angular
会覆盖咕噜创build的package.json文件,这将打破咕噜作为@jjperezaguinaga报道。
确保在安装express .
之前保存package.json的副本express .
。 然后将以下依赖项添加到原始的package.json中:
"dependencies" : { "express": "3.3.4", "jade": "*" }
我有这个解决scheme的麻烦:expression仍然尝试加载index.jade而不是index.html,但如果我inputlocalhost:3000 / index.htmlexpression渲染正确。 我解决了从app.js中删除这一行:
//app.get('/', routes.index);
希望这可以帮助。 感谢分享,D.
以下是其他人先前build议的步骤汇总,但是都是以编号的步骤汇总的。 这是基于版本:Yeoman 1.0.4&Express 3.3.8。
1)创build你的项目目录并将其放入CD中
2)安装angular度:
yo angular
(如果你没有以su身份login,需要运行下两行)
bower install sudo npm install
3)将package.json重命名为package_yo.json(所以不会被package.json的express版本覆盖)
4)安装Express express -c less -Hs。 (或其他任何你想要的明确选项)
sudo npm install
5)在Express'app.js:app.use(require('less-middleware')({src:_ dirname +'/ app'})中删除Express'公共目录并将'public'更改为'app' ); app.use(express.static(path.join( _dirname,'app')));
6)删除快速默认路由(app.get('/',routes.index);)(现在express将使用angular的/ app文件夹中指定的path
7)启动服务器npm start
(那么你应该看到Yeoman的欢迎页面:localhost:3000 /)