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 相关文章推荐
jquery提示 &quot;object expected&quot;的解决方法
Dec 13 Javascript
Jqyery中同等与js中windows.onload的应用
May 10 Javascript
JavaScript单元测试ABC
Apr 12 Javascript
关于jQuery object and DOM element
Apr 15 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
Jan 06 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
js实现的四级左侧网站分类菜单实例
May 06 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
jquery.validate使用详解
Jun 02 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
Jul 27 Javascript
JS对象创建的几种方式整理
Feb 28 Javascript
详解vue中组件参数
Jul 09 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获得url参数中具有&amp;的值的方法
2014/03/05 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php过滤html标记属性类用法实例
2014/09/23 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
Prototype Selector对象学习
2009/07/23 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
python迭代器与生成器详解
2016/03/10 Python
Python常见字典内建函数用法示例
2018/05/14 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
英语教育专业自荐信
2014/05/29 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
普通员工辞职信范文
2015/05/12 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
把77A收信机改造成收音机
2022/04/05 无线电
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js