ExpressJS里面的Yeoman

时间:2012-12-31 21:38:31

标签: node.js angularjs express 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'来在min应用程序中将缩小的JS输出到/ public。

我对路线如何融合有点模糊?我想/ /拉起Angular路线而不是快速路线等.github上的angular-express-seed示例看起来还不错,但我仍然希望Yeoman集成到项目中。

任何建议将不胜感激。

6 个答案:

答案 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 /)