sails框架的学习指南


Posted in Javascript onDecember 22, 2014

上周通过搭建CMS系统接触到了sails框架,知道一些ORM的概念。这周开始深入后台数据交互,发现twenty框架的数据结构在sails上又设计了一番(比如node、category),不得不说师哥就是厉害。不过复杂度也提高了。而我在DTree项目中的任务就是使用sails来进行业务流程和数据库的交互。这周接下来的时间就是使用sails了。

sails简介

sails如同ruby on rails一样,也是一种为了使web开发变得简单的框架。就我这段时间的了解,其完全继承Express&Socket.io的一些API,并且使用了waterline(ORM)进行统一地数据库交互,使得可以在不同的数据库环境中无需直接修改代码即可完成CRUD操作;与backbone框架同步前后端的数据 ,使用policies中间件来进行安全验证交互 自身的blueprints在前后台中无需码一行即可通过RESTfull API进行数据交互。

Socket.io & Express

前端时间学习过这两样东西,一个是websock通信,一个是处理HTTP的请求。sails并没有从新设计而是直接使用这两个工具来处理这些功能,在学习成本上减少了许多。Socket.io在服务器和客户端两边触发消息、监听消息并相应作出操作。

 `

 //服务器端

 io.sockets.on("connection", function(sock){

 sock.emit("normalMessage",{a:"c"});

 });

 //客服端

 sock.on("normalMessage", function(json){...});

 `

Express的作用就在于路由操作,比如app.get('/login', function(req, res){});。
Sails Blueprints & Backbone
在web开发中,CRUD是一类相似操作,比如在http中get/post,数据库中的select/insert这类。sails的blueprint API和js的backbone框架都使用一类统一的函数(比如findOne),使得程序在建立了model和相应的controller时,内在逻辑就已经建立。比如常用的users model在sails就自建了controller来进行users的数据传递和存储。我们需要注意的只有文件名的规范和业务流程即可。如果你要覆盖(重载)原有方法也是可以的。当我们在config文件夹中的routes设置好action和controller之后,在对应的controller中可以添加自己需要的功能。

Waterline
sails这个依赖包的API是用来与数据库交互的,比如create()、findOne()、update()等,正如前面所说,我们无需在意不同的数据库工具直接统一调用这些方法即可。比如输入数据时

`

Users.create({username: username, password: password}).exec(function(error, user) {

 if (error) {

  res.send(500, {error: "DB Error"});

 } else {

  req.session.user = user;

  res.send(user);

 }

`

系统默认的是本地文件系统保存数据,我们如果需要选择mysql或者mongoDB。只需在配置文件中修改一下,选择数据库的adapter就能进行数据交互。

Policies

应用于controller上的中间件,在http请求发出之前运行。可以实现身份控制,比如你只有登录才能进行接下来的动作。

`

if(req.session.user){

    var action = req.options.action;

    if(action == "create"){

     req.body.userId = req.session.user.id;

        req.body.username = req.session.user.username;

    }

    next();

}else{

    res.send("You Must Be Logged In", 403);

}

`

next

sails成功上手,不过还要在这个上面多下功夫。把基础打牢才好实现具体需求。所以接下来还要继续学习,多找例程深入学习sails,也要知道这个框架的局限性。

Javascript 相关文章推荐
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
使用JavaScript获取电池状态的方法
May 03 Javascript
使用jQuery实现验证上传图片的格式与大小
Dec 03 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
javascript表单事件处理方法详解
May 15 Javascript
Bootstrap选项卡与Masonry插件的完美结合
Jul 06 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
vue页面离开后执行函数的实例
Mar 13 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
js实现鼠标滑动到某个div禁止滚动
Sep 17 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 #Javascript
javascript动态创建及删除元素的方法
Dec 22 #Javascript
了不起的node.js读书笔记之例程分析
Dec 22 #Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 #Javascript
了不起的node.js读书笔记之node.js中的特性
Dec 22 #Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 #Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 #Javascript
You might like
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
分享php多功能图片处理类
2016/05/15 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
扒一扒JavaScript 预解释
2015/01/28 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
jquery自定义显示消息数量
2017/12/19 jQuery
vue实现城市列表选择功能
2018/07/16 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
详解Python中is和==的区别
2019/03/21 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
八年级生物教学反思
2014/01/22 职场文书
和睦家庭事迹
2014/05/14 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
杭白菊导游词
2015/02/10 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android