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 相关文章推荐
SWFObject Flash js调用类
Jul 08 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
Oct 15 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
Jun 08 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
JS实现的RC4加密算法示例
Aug 16 Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 Javascript
详解Vue 换肤方案验证
Aug 28 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
杏林同学录(二)
2006/10/09 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python使用cPickle模块序列化实例
2014/09/25 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
实习期自我鉴定
2013/10/11 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
交通志愿者活动总结
2014/06/27 职场文书
九一八事变演讲稿
2014/09/05 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
特此通知格式
2015/04/27 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
严以律己学习心得体会
2016/01/13 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫