Node.js学习日记7

1.siblings()方法
解析:siblings()方法返回被选元素的所有同级元素。同级元素是共享相同父元素的元素。查找每个p元素的所有类名为"selected"的所有同胞元素:

$("p").siblings(".selected")

2.:checkbox选择器
解析:选取所有带有type="checkbox"的<input>元素:

$(":checkbox")

3.$(“input:not(:checked)”)
解析:
[1]:checked是选择处于选中状态的复选框或单选按钮元素
[2]:not(:checked)是选择处于非选中状态的复选框或单选按钮元素

4.$("#lastname")
解析:id="lastname"的元素。

5.prop()方法
解析:prop()方法设置或返回被选元素的属性和值。当该方法用于返回属性值时,则返回第一个匹配元素的值。

6.<pre>标签
解析:pre元素可定义预格式化的文本。被包围在pre元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。

7.EJS标签含义
解析:
[1]<%:‘脚本’标签,用于流程控制,无输出
[2]<%_:删除其前面的空格符
[3]<%=:输出数据到模板(输出是转义HTML标签)
[4]<%-:输出非转义的数据到模板
[5]<%#:注释标签,不执行、不输出内容
[6]<%%:输出字符串’<%’
[7]%>:一般结束标签
[8]-%>:删除紧随其后的换行符
[9]_%>:将结束标签后面的空格符删除

8.利用session记录用户访问网站次数
解析:

if(req.session.times){
    req.session.times++;
}else{
    req.session.times=1;
}

9.将view engine设置为ejs
解析:

app.set('views',path.join(__dirname , 'views') );
app.engine('.html', require('ejs').__express);  
app.set('view engine', 'html'); 

10.Mongoose
解析:Mongoose为模型提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证,查询构建,业务逻辑钩子等,开箱即用。如下所示:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
});
var kittySchema = mongoose.Schema({
  name: String
});
var Kitten = mongoose.model('Kitten', kittySchema);
var felyne = new Kitten({ name: 'Felyne' });
console.log(felyne.name);

11.exports和module.exports区别
解析:
[1]module.exports初始值为一个空对象{}
[2]exports是指向的module.exports的引用
[3]require()返回的是module.exports而不是exports

12.Proxy构造函数
解析:var proxy = new Proxy(target, handler);如下所示:
Proxy对象的所有用法,都是上面这种形式,不同的只是handler参数的写法。其中,newProxy()表示生成一个Proxy实例,target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。

13.async函数
解析:
[1]在普通函数前加async操作符可以定义async函数。
[2]async函数体中的代码是异步执行的,不会阻塞后面代码执行,但它们的写法和同步代码相似。
[3]async函数会返回一个已完成的promise对象,实际在使用的时候会和await操作符配合使用。

14.express.Router
解析:在myblog目录下创建空文件夹routes,在routes目录下创建index.js和users.js。如下所示:
[1]index.js

const express = require('express')
const app = express()
const indexRouter = require('./routes/index')
const userRouter = require('./routes/users')

app.use('/', indexRouter)
app.use('/users', userRouter)

app.listen(3000)

[2]routes/index.js

const express = require('express')
const router = express.Router()

router.get('/', function (req, res) {
  res.send('hello, express')
})

module.exports = router

[3]routes/users.js

const express = require('express')
const router = express.Router()

router.get('/:name', function (req, res) {
  res.send('hello, ' + req.params.name)
})

module.exports = router

说明:将/和/users/:name的路由分别放到了routes/index.js和routes/users.js中,每个路由文件通过生成一个express.Router实例router并导出,通过app.use挂载到不同的路径。在实际开发中推荐使用express.Router将不同的路由分离到不同的路由文件中。

15.Node.js模块
解析:
[1]connect-mongo:将session存储于mongodb,结合express-session使用
[2]connect-flash:页面通知的中间件,基于session实现
[3]express-formidable:接收表单及文件上传的中间件
[4]config-lite:读取配置文件
[5]marked:markdown解析
[6]mongolass:mongodb驱动
[7]objectid-to-timestamp:根据ObjectId生成时间戳
[8]sha1:sha1加密,用于密码加密
[9]winston:日志
[10]express-winston:express的winston日志中间件

16.ESLint
解析:ESLint是一个代码规范和语法错误检查工具。使用ESLint可以规范代码书写,可以在编写代码期间就能发现一些低级错误。

17.EditorConfig
解析:EditorConfig是一个保持缩进风格的一致的工具,当多人共同开发一个项目的时候,往往会出现每个人用不同编辑器的情况,而且有的人用tab缩进,有的人用2个空格缩进,有的人用4个空格缩进,EditorConfig就是为了解决这个问题而诞生。.editorconfig文件,如下所示:

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
tab_width = 2

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

这里使用2个空格缩进,tab长度也是2个空格。trim_trailing_whitespace用来删除每一行最后多余的空格,insert_final_newline用来在代码最后插入一个空的换行。

18.config-lite
解析:config-lite是一个轻量的读取配置文件的模块。config-lite会根据环境变量[NODE_ENV]的不同加载config目录下不同的配置文件。如果不设置NODE_ENV,则读取默认的default配置文件,如果设置了NODE_ENV,则会合并指定的配置文件和default配置文件作为配置,config-lite支持.js、.json、.node、.yml、.yaml后缀的文件。config/default.js如下所示:

module.exports = {
  port: 3000,
  session: {
    secret: 'myblog',
    key: 'myblog',
    maxAge: 2592000000
  },
  mongodb: 'mongodb://localhost:27017/myblog'
}

19.connect-flash
解析:connect-flash是基于session实现的,它的原理很简单:设置初始值req.session.flash={},通过req.flash(name,value)设置这个对象下的字段和值,通过req.flash(name)获取这个对象下的值,同时删除这个字段,实现了只显示一次刷新后消失的功能。

20.Express权限控制
解析:可以把用户状态的检查封装成一个中间件,在每个需要权限控制的路由加载该中间件,即可实现页面的权限控制。

21.mocha和supertest
解析:mocha和supertest是常用的测试组合,通常用来测试restful的api接口。

22.pm2
解析:pm2是Node.js下的生产环境进程管理工具,就是我们常说的进程守护工具,可以用来在生产环境中进行自动重启、日志记录、错误预警等等。

23.HTML5 Boilerplate
解析:HTML5 Boilerplate帮助构建快速,健壮,并且适应力强的webapp或网站。这个小小的源码包集合了100位开发者的经验,可以将这些经验运用在项目中。

24.Cordova
解析:使用HTML、CSS & JS进行移动App开发,多平台共用一套代码。

25.Yeoman
解析:Yeoman是现代化前端项目的脚手架工具,用于生成包含指定框架结构的工程化目录结构。

参考文献:
[1]EJS[高效的JavaScript模板引擎]:https://ejs.bootcss.com/
[2]Mongoose:http://www.mongoosejs.net/
[3]ECMAScript 6入门:http://es6.ruanyifeng.com/
[4]async函数:http://es6.ruanyifeng.com/#docs/async
[5]JavaScript Promise迷你书:http://liubin.org/promises-book
[6]nswbmw/N-blog:https://github.com/nswbmw/N-blog
[7]nswbmw/N-blog:https://github.com/nswbmw/N-blog
[8]HTML5 Boilerplate:https://www.bootcss.com/p/html5boilerplate/
[9]Cordova中文网:http://cordova.axuer.com/
[10]Cordova:https://cordova.apache.org/
[11]Yeoman:https://yeoman.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值