探索与创新:MEAN.JS全栈JavaScript开发框架
MEAN.JS是一个强大的全栈JavaScript开源解决方案,它为基于MongoDB、Node.js、Express和AngularJS的应用提供了一个坚实的起点。该框架的目标是解决这些流行框架间的连接问题,构建一个稳健的基础以支持日常的开发需求,并帮助开发者在使用JavaScript组件时遵循最佳实践。
开始之前
在您开始之前,建议您了解MEAN.JS的基础构成:
- MongoDB - 通过MongoDB官方网站深入学习,参考其官方手册。
- Express - 可从Express官方网站起步,阅读快速入门和ExpressJS指南。
- AngularJS - 首选AngularJS官网,也可查阅Thinkster热门指南和[Egghead视频教程](https://egghead.io/)。
- Node.js - 访问Node.js官方网站并安装,遇到问题可查看这个StackOverflow线程获取更多资源。
必要条件
确保您的开发环境已安装以下先决条件:
- Git - 下载并安装Git。
- Node.js - 下载并安装Node.js以及npm包管理器。
- MongoDB - 下载并安装MongoDB,确保其运行在默认端口(27017)。
- Bower - 安装Bower包管理器前,请确认已经安装了Node.js和npm,然后全局安装Bower:
$ npm install -g bower
获取MEAN.JS
有多种方法可以获取MEAN.JS:
使用GitHub克隆仓库
推荐的方式是从GitHub直接克隆MEAN.JS仓库:
$ git clone https://github.com/meanjs/mean.git meanjs
这将把最新的MEAN.JS仓库克隆到名为meanjs
的文件夹中。
下载ZIP归档
另一种方式是从GitHub master分支下载ZIP文件。也可以用wget
命令:
$ wget https://github.com/meanjs/mean/archive/master.zip -O meanjs.zip; unzip meanjs.zip; rm meanjs.zip
别忘了将mean-master
重命名为您的项目名。
使用Yo生成器
利用官方Yo生成器,您可以快速创建MEAN.JS的初始版本,还附带一个应用程序生成器,以简化日常开发流程。
快速安装
当您下载了模板并安装所有必需项后,只需几个步骤就可以启动您的应用。
模板中预装了package.json
和bower.json
文件,列出了启动应用所需的模块。
在应用目录中运行以下命令来安装依赖:
$ npm install
这一命令会执行以下操作:
- 安装应用程序运行所必需的依赖包。
- 如果是在开发环境中,也会安装测试和运行应用所需的开发依赖包。
- 当npm包安装完成后,npm会触发Bower安装前端所需的所有模块。
- 要更新这些包,只需运行
npm update
。
运行你的应用
使用npm运行你的应用:
$ npm start
应用将在开发环境下运行,监听3000端口,因此只需要在浏览器中访问http://localhost:3000即可。
一切就绪!现在你的应用正在运行。继续阅读文档,开启你的开发之旅。
探索config/env/development.js
以了解开发环境配置选项。
生产环境运行
要在生产环境中运行应用:
$ npm run start:prod
查看config/env/production.js
以了解生产环境配置选项。
用户种子运行
在运行时创建默认账号:
开发环境:
MONGO_SEED=true npm start
若用户'"user"'或'admin"已存在,控制台会显示错误信息。只需从控制台复制密码即可。
生产环境:
MONGO_SEED=true npm start:prod
仅在'admin'用户不存在的情况下,一次性为其创建。请记下控制台给出的密码。
使用TLS(SSL)运行
应用默认会在安全模式下运行,即启用SSL,监听8443端口。 为了以安全的方式运行应用,你需要使用OpenSSL生成一套自签名证书。在类Unix系统上,可以使用以下命令:
$ npm run generate-ssl-certs
Windows用户请参照此处的说明。 生成密钥和证书后,将其放入config/sslcerts
目录。
最后,执行prod
任务npm run start:prod
。
- 在生产环境中,通过更改
config/env/production.js
中的secure
选项启用/禁用SSL模式。
应用测试
运行完整的测试套件,使用test
任务:
$ npm test
这会运行服务器端(位于app/tests/
目录)和客户端(位于public/modules/*/tests/
)的测试。
只运行服务器端测试,使用test:server
任务:
$ npm run test:server
如果只想重新运行修改过的服务器端测试,使用test:server:watch
任务:
$ npm run test:server:watch
而只运行客户端测试,则使用test:client
任务:
$ npm run test:client
使用Gulp运行应用
MEAN.JS集成了Gulp作为构建工具和任务自动化工具。
我们使用npm脚本包装了Gulp任务,因此无论使用哪个构建工具,对项目的运行都保持透明。
首先全局安装Gulp:
$ npm install gulp -g
然后以开发环境运行:
$ gulp
直接使用Gulp运行,你可以使用npm run gulp <task>
,如npm run gulp eslint
来运行指定的任务。
使用Docker开发和部署
使用Compose进行本地开发和测试:
$ docker-compose up
直接用Docker进行本地开发和测试:
$ docker build -t mean .
$ docker run -p 27017:27017 -d --name db mongo
$ docker run -p 3000:3000 --link db:db_1 mean
若要启用实时重载,转发端口35729并挂载/app和/public作为卷:
$ docker run -p 3000:3000 -p 35729:35729 -v /your/path/to/mean-stack/mean/public:/home/mean/public -v /your/path/to/mean-stack/mean/app:/home/mean/app --link db:db_1 mean
使用Docker进行生产部署:
- 通过Compose进行生产部署:
$ docker-compose -f docker-compose-production.yml up -d
- 仅使用Docker进行生产部署:
$ docker build -t mean -f Dockerfile-production .
$ docker run -p 27017:27017 -d --name db mongo
$ docker run -p 3000:3000 --link db:db_1 mean
使用MEAN.JS开始
你已经有了应用运行起来,但还有很多东西需要理解。我们推荐你浏览官方文档。 在文档中,我们将尝试解释MEAN组件的通用概念,并为你提供一些指南,帮助你改进开发流程。我们试图涵盖尽可能多的方面,并根据你的要求持续更新。你也可以帮助我们开发和改善文档,通过检查这个项目的gh-pages分支。
社区
- 访问官方网站了解变更和路线图。
- 加入#meanjs在freenode上聊天。
- 关注我们在Google Group上的讨论。
- 在Twitter和Facebook上向我们提问。
深度参与
- 点击按钮部署至Heroku,注册Heroku账号并将工作副本部署至云端,无需经过上述步骤。
- 设置Amazon S3以存储用户头像,设置以下环境变量:
UPLOADS_STORAGE
设为s3
,S3_BUCKET
设为桶名称,S3_ACCESS_KEY_ID
设为S3访问键,S3_SECRET_ACCESS_KEY
设为S3访问秘钥。
开源贡献
我们欢迎社区的pull请求!请务必阅读贡献指南开始贡献。
致谢
受Madhusudhan Srinivasa的伟大工作启发,MEAN名字由Valeri Karpov创造。