Node.js与Sails ~项目结构与Mvc实现及日志机制


Posted in Javascript onOctober 14, 2015

本文首先从sails的安装讲起接下来介绍node.js与Sails的日志机制,小伙伴们已经迫不及待要看下文了吧,好吧。

Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新的功能组件,下面我们来看一下安装方法

一 安装Sails

npm -g install sails

二 建立一个Sails的项目

sails new testProject

三 启动项目

cd testProject
sails lift

四 项目的结构,基于MVC理念

Node.js与Sails ~项目结构与Mvc实现及日志机制

我们可以看到它与是由model,view,controller组成,它们之间的调用关系与.net mvc十分类似,只不过.net mvc里的model主要是指viewmodel,而在sails里model主要是数据模型,即.net里的Entity,它是数据表的一种抽象,对于数据的持久化,sails提供了很多种,如本地文件,mysql,mongodb,redis等,对于sqlserver我们也可以找到第三方的组件。

五 通过controller的action来渲染视图

我们在.net mvc里,大家都知道视图是通过action的render方法进行渲染的,其时sails也是这样的,可以使用原生的render,也可以使用封装好的view方法,而在视图上直接使用你的action返回的对象即可。

controller/action的内容

module.exports={
  index: function (req, res){
    return res.view("test/index",{title:"大叔",engTitle:"Lind"});
    //return res.view("view_name",data)//view_name参数为空表示用当前的action
  }
};

view-ejs的内容

<p>从action返回的对象-title:<%=title%></p>
<p>从action返回的对象-engTitle:<%=engTitle%></p>

调用的结果如下

Node.js与Sails ~项目结构与Mvc实现及日志机制

如果进入index页面可以直接写控制器名称

Node.js与Sails ~项目结构与Mvc实现及日志机制

如果其它action希望走/test这样的路由,需要在config/route.js里进行配置,如为add这个action添加路由为/user,它的设置如

'get /user': {view: 'user/add',locals: {layout: null}},
'get /test':{view:'test/index',locals:{layout:null}}

好了,到这样一个最简单的MVC的DEMO就做好了,下一节我们将引用Model,即数据持久化的机制,进行对数据表的curd操作,敬请期待...

ps:Node.js与Sails~日志机制

看到Sails的日志就会想起来log4net,确实它们在很多地方是相似的,都是采用分级别记录的方式,而sails我觉得在使用上更加方便,它不需要我们做多于的事情,直接sails.log.级别("你的日志内容")就搞定了,你不需要关心什么单例,或者持久化方式,Sails的日志只是对console.log的一种补充,可以理解为分了类之后的console.log,并有颜色的区分,呵呵。

一 我们来看一下sails.log的日志级别

Priority level Log fns visible
0 silent N/A
1 error .error()
2 warn .warn(), .error()
3 debug .debug(), .warn(), .error()
4 info .info(), .debug(), .warn(), .error()
5 verbose .verbose(), .info(), .debug(), .warn(), .error()
6 silly .silly(), .verbose(), .info(), .debug(), .warn(), .error()

二 开始测试我们的日志

        sails.log('debug日志!');//sails.log.debug("debug")
        sails.log.error('error日志!');
        sails.log.warn('warn日志!','request aborted.');
        sails.log.info('info日志!');
        sails.log.verbose('verbose日志!');
        sails.log.silly('silly日志!');

三 配置项目的日志级别,位于config/log.js

module.exports.log = {
   level: 'info'
};

四 从结果中看到,日志记录时,只记录比当前配置级别低的日志内容

Node.js与Sails ~项目结构与Mvc实现及日志机制

怎么样,sails的日志挺方便吧!

Javascript 相关文章推荐
在javascript将NodeList作为Array数组处理的方法
Jul 09 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
JQuery实现超链接鼠标提示效果的方法
Jun 10 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
javascript 玩转Date对象(实例讲解)
Jul 11 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 #Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 #Javascript
JS更改select内option属性的方法
Oct 14 #Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 #Javascript
JS实现的最简Table选项卡效果
Oct 14 #Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 #Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 #Javascript
You might like
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP的反射机制实例详解
2017/03/29 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
python创建列表并给列表赋初始值的方法
2015/07/28 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
python FTP编程基础入门
2021/02/27 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
C有"按引用传递"吗
2016/09/06 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
大班开学家长寄语
2014/04/04 职场文书
初中学生评语大全
2014/04/24 职场文书
信息技术课后反思
2014/04/27 职场文书
党支部三会一课计划
2014/09/24 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
python获取淘宝服务器时间的代码示例
2021/04/22 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers
Vue router配置与使用分析讲解
2022/12/24 Vue.js