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 new Date() 出现NaN 的分析
Oct 23 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
Aug 23 Javascript
jquery禁用右键示例
Apr 28 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
瀑布流的实现方式(原生js+jquery+css3)
Jun 28 Javascript
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
简单实现js放大镜效果
Jul 24 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
javascript事件监听与事件委托实例详解
Aug 16 Javascript
简单聊聊TypeScript只读修饰符
Apr 06 Javascript
微信小程序实现轮播图指示器
Jun 25 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
Protoss热键控制
2020/03/14 星际争霸
PHP读取XML值的代码(推荐)
2011/01/01 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python lxml中etree的简单应用
2019/05/10 Python
python3图片文件批量重命名处理
2019/10/31 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
创建索引时需要注意的事项
2013/05/13 面试题
学校课外活动总结
2014/05/08 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
给校长的一封检讨书
2014/09/20 职场文书
大学生赌博检讨书
2014/09/22 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
离婚代理词范文
2015/05/23 职场文书
会计主管竞聘书
2015/09/15 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript