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+JQuery返回顶部功能如何实现
Dec 03 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
深入分析Javascript跨域问题
Apr 17 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
jquery密码强度校验
Dec 02 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
详解webpack2+React 实例demo
Sep 11 Javascript
Javascript的this详解
Mar 23 Javascript
浅析Vue下的components模板使用及应用
Nov 27 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
Jun 10 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
PHP关联数组的10个操作技巧
2013/01/21 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python正则表达式知识汇总
2017/09/22 Python
pandas多级分组实现排序的方法
2018/04/20 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
携程英文网站:Trip.com
2017/02/07 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
技术总监的工作职责
2013/11/13 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
理想演讲稿范文
2014/05/21 职场文书
司机工作自我鉴定
2014/09/19 职场文书
建筑横幅标语
2014/10/09 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android