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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
Oct 17 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
Jul 19 Javascript
Vue-router 切换组件页面时进入进出动画方法
Sep 01 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
浅析四种常见的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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
layui获取选中行数据的实例讲解
2018/08/19 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python 通过pip安装Django详细介绍
2017/04/28 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python装饰器用法与知识点小结
2020/03/09 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
护理专业的自荐信
2013/10/22 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
班子四风对照检查材料
2014/08/21 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
超市食品安全承诺书
2015/04/29 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
MySQL数据库表约束讲解
2022/06/21 MySQL