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 相关文章推荐
学习ExtJS(一) 之基础前提
Oct 07 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
详解Bootstrap按钮
Jan 04 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
js canvas实现QQ拨打电话特效
May 10 Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
微信小程序文字显示换行问题
Jul 28 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 Javascript
javascript canvas实现简易时钟例子
Sep 05 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
什么是MVC,好东西啊
2007/05/03 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
django使用html模板减少代码代码解析
2017/12/12 Python
python实现感知器
2017/12/19 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python中url标签使用知识点总结
2020/01/16 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
附答案的Java面试题
2012/11/19 面试题
秋季运动会表扬稿
2014/01/16 职场文书
文员岗位职责范本
2014/03/08 职场文书
企业新年寄语
2014/04/04 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
专科生就业求职信
2014/06/22 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
三好学生事迹材料
2014/12/24 职场文书
大学生个人学年总结
2015/02/15 职场文书
入党个人总结范文
2015/03/02 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
欠条格式范本
2015/07/03 职场文书
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python