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实现计算两个日期的间隔天数
Aug 14 Javascript
一个挺有意思的Javascript小问题说明
Sep 26 Javascript
javascript setTimeout和setInterval计时的区别详解
Jun 21 Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
Jul 16 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
Vue 进阶教程之v-model详解
2017/05/06 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
python备份文件的脚本
2008/08/11 Python
python转换摩斯密码示例
2014/02/16 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python使用turtule画五角星的方法
2015/07/09 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
大学生就业自我鉴定
2013/10/26 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
学校捐书倡议书
2015/04/27 职场文书
《日月潭》教学反思
2016/02/20 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python
Java集成swagger文档组件
2021/06/28 Java/Android
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers