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 相关文章推荐
基于逻辑运算的简单权限系统(实现) JS 版
Mar 24 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
jQuery Raty 一款不错的星级评分插件
Aug 24 Javascript
详解Javascript函数声明与递归调用
Oct 22 Javascript
zTree实现节点修改的实时刷新功能
Mar 20 Javascript
在node中如何使用 ES6
Apr 22 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
详解javascript 变量提升(Hoisting)
Mar 12 Javascript
Vue响应式原理Observer、Dep、Watcher理解
Jun 06 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 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
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Python调用C语言程序方法解析
2020/07/07 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
留学自荐信
2013/10/10 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
简历中的自我评价范文
2014/02/05 职场文书
珠宝店促销方案
2014/03/21 职场文书
培训科主任岗位职责
2014/08/08 职场文书
百年孤独读书笔记
2015/06/29 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书