node.js 环境下使用 sails 框架搭建服务
文章目录
什么是Sails
Sails.js使部署一个定制的企业级Node.js应用变成一件极为简单的事,它的设计模仿了像Ruby on Rails这样的MVC框架,但是更支持现代应用的开发需求:可扩展的数据驱动层的API,面向服务的架构,Sails.js允许你方便快速得使用Node.js生成应用,并通过MVC模式来使管理和维护代码变得更加简单.
使用 Sails
Sails.js 依赖 node.js ,使用时确保你的环境安装了 node.js 环境.
npm install sails -g
搭建项目
安装了 node.js 和 sails.js 的环境,只需要一条命令即可创建 sails 框架项目.
sails new sailsProject
然后我们使用 IDE 打开此项目:
├── Gruntfile.js
├── README.md
├── api
│ ├── controllers
│ ├── models
│ ├── policies
│ ├── responses
│ └── services
├── app.js
├── assets
│ ├── favicon.ico
│ ├── images
│ ├── js
│ ├── robots.txt
│ ├── styles
│ └── templates
├── config
│ ├── blueprints.js
│ ├── bootstrap.js
│ ├── connections.js
│ ├── cors.js
│ ├── csrf.js
│ ├── env
│ ├── globals.js
│ ├── http.js
│ ├── i18n.js
│ ├── local.js
│ ├── locales
│ ├── log.js
│ ├── models.js
│ ├── policies.js
│ ├── routes.js
│ ├── session.js
│ ├── sockets.js
│ └── views.js
├── node_modules
├── package.json
├── tasks
│ ├── README.md
│ ├── config
│ ├── pipeline.js
│ └── register
└── views
├── 403.ejs
├── 404.ejs
├── 500.ejs
├── homepage.ejs
└── layout.ejs
通过目录树我们看到 sails 帮我们生成了很多文件, sails 有约定的文件夹和约定的文件目录,甚至是文件名,
所以sails 框架的宣传语 "约定优于配置"
下面我们来罗列主要的文件目录及文件:
api/
api :目录下是你要构建应用的核心所在,常说的MVC的设计结构就体现在这里
api/controllers :控制层,该层是Http请求的入口。Sails官方建议该层只处理请求的转发和页面的渲染,具体的逻辑实现应该交给Service层。
api/models :模型层,在Sails中,对于Model采用的是充血模型,除了可以在模型中定于属性之外,还可以定义包含逻辑处理的函数在Sails中,所有Model都可以全局性访问。
api/policies :过滤层,该层在Controller层之前对Http请求做处理,在这一层中,可以定于一些规则来过滤Http请求,比如身份认证什么的。
api/responses :http响应的方法都放这里,例如服务器错误、请求错误、404错误等,定义在responses文件夹里面的方法,都会赋值到controller层的req对象中。
api/services :服务层,该层包含逻辑处理的方法,在Sails中,所有Service都可以全局性访问。
views/
存放视图模版文件的地方,Sails默认是提供ejs模版引擎的,如果你愿意,你可以换成jade、handlebars或者任何你喜欢的模版引擎。
assets/
资源文件夹,在Sails启动的时候,会启动某一个Grunt任务,把assets文件夹里的内容或压缩或编译或复制到根目录下的.tmp目录,这是前端可以直接通过路由访问的资源,HTML、JS、CSS以及图片等静态资源都放在这里了
config/
配置文件夹,在Sails启动的时候,会加载该文件夹里的文件,并赋值在全局对象sails.config中,所以能够在任何一个地方都能用到。在用Sails开发,会经常跟这个文件夹里的文件打交道,从config的构成很容易知道Sails都提供哪方面的功能。
config 目录下文件介绍
env 此文件夹代表环境变量:
不同的环境变量会对应不同的配置文件.
development.js -- 开发环境
production.js -- 生产环境
locales 文件夹 下是国际化语言文件
blueprints.js blueprints配置文件, blueprints 是sails 框架的特色之一,可以根据 controller 里面的方法自动生成 restful 格式请求路由.
connections.js 存储介质配置文件, sails 支持多种关系型数据库和非关系型数据库.
routes.js 自定义路由配置文件
tasks/
Sails自带的项目自动化工具是Grunt,而Grunt的配置和任务注册都放在这个文件夹里了。这里已经提供了通常会用到的CSS编译、JS压缩、文件合并,更改检测等等任务,当然如果没有自己需要的,还能扩展。
app.js
Sails的启动文件,无论是$ sails lift命令或者$ npm start命令都会运行该文件。
Gruntfile.js
grunt 自动化构建工具的配置文件
使用sails 实现MVC
MVC是流传在开发环境中非常流行的一种开发模式.
包含 model ,View ,Controller
但是在 Sails 框架中,不得不说的还有 Service 和 Policy
下面我们通过 sails 命令来生成 model , controller
生成 model
sails generate model MODEL_NAME
这时你的 api/models/ 会生成刚才你生成的 MODEL_NAME 文件,但是里面没有一个属性.
你也可以在生成的时候指定 model 里面的属性名称及类型.
sails generate model TestUser name:string email:string password:string
生成 controller
sails generate controller TestUser
这时生成的 TestUserController.js 里没有方法
我们可以在生成的时候指定方法.
sails generate controller TestUser index show edit delete
这时生成的 TestUserController.js 里面会有上面的4个方法,但是没有发放实现,需要我们来补充.
同时生成 model 和 controller
sails generate api TestUser
这时会在 api 目录下 model 文件下生成 TestUser.js 文件和 controller 目录下 TestUserController.js
具体更加详细是使用,需要逐步了解和学习,后面会继续分享.