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 相关文章推荐
基于jquery的分页控件(C#)
Jan 06 Javascript
Javascript函数的参数
Jul 16 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
Apr 16 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
May 03 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
javascript  删除select中的所有option的实例
Sep 17 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
vue 实现路由跳转时更改页面title
Nov 05 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
jQuery实现飞机大战小游戏
Jul 05 jQuery
canvas实现贪食蛇的实践
Feb 15 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
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php 中英文语言转换类
2011/09/07 PHP
php框架知识点的整理和补充
2021/03/01 PHP
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
vuejs指令详解
2017/02/07 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
整理Python中的赋值运算符
2015/05/13 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python安装requests库的实例代码
2019/06/25 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
Python之修改图片像素值的方法
2019/07/03 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Python 音频生成器的实现示例
2019/12/24 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
中国梦我的梦演讲稿
2014/04/23 职场文书
团日活动总结书
2014/05/08 职场文书
CAD实训总结范文
2015/08/03 职场文书
导游词之清晏园
2019/11/22 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript