# 1、检测系统中 node 版本号的指令是?

node -v

# 2、如何退出 node 执行环境(REPL 环境)?

 ctrl+c c

# 3、node 如何创建服务器,写出代码?

 var http=require(‘http’);
var server=http.createServer(function(req,res,next){
     //业务逻辑      })
server.listen(3000,function(err){if(!err){console.log(‘服务器运行在3000端口上’)}})

# 4、http.createServer (function (req,res){ // 获取请求 }) 在如上函数中如何获取前端请求地址?

  req.url

# 5、req,res 分别代表什么?

 req:全称request请求对象
 res:全称 response响应对象

# 6. 如何向客户端浏览器响应‘hello world’?

res.write(‘hello world’);
res.end()

# 7. 浏览器请求 ‘/favicon.ico’表示什么?如何做出响应?

1
2
3
4
5
6
7
8
  	表示浏览器(客户端)请求页面图标

if(req.url==’/favicon.ico’){
fs.readFile(‘图标地址’,function(err,data){
res.write(data);
res.end()
})
}

# 8、如何加载 fs 模块?

  var fs=require(“fs”);

# 9、fs 模块如何异步读取一个文件 (文件路径为:’./file.json’)?

1
2
3
4
5
6
fs.readFile(‘./file.json’,’utf-8’,function(err,data){  
If(!err){
// data即为读取内容
}
})

# 10、fs 如何同步读取文件(文件的路径为:‘./file.json’)?

fs.readFileSync(‘’./file.json”,”utf-8”);

# 11、同步和异步的区别?各举一个 Js 中同步和异步的案例?

1
2
3
4
异步:在一件事情没有做完,可以接着做另外一件事  非阻塞
同步:一件事情没有做完,就不可以做下一件事 阻塞。
同步案例:for循环语句,alert() 等
异步案例:定时器,ajax异步请求

# 12、fs 如何异步写入文件,写入内容为‘abc’, 写入文件路径为’./file.txt’?

	fs.writeFile(‘./file.txt’,’abc’,function(err){   })

# 13、写出注册的 form 表单,提交地址为’/api/login’, 提交方式为’get’, 用户名字段为 user, 密码字段为 pass?

 <form  action=”/api/login” method=’get’>

     用户名:<input type=’text’ name=”user”/>
    密码:<input type=’password’ user=”pass”>

      <button type=’submit’ >注册</button>
 </form>

# 14、querystring 模块如何解析如下字符串,(‘user=tom&pass=123456’)?

 querystring.parse(‘user=tom?pass=123456’)

# 15、url 模块如何解析请求地址 req.url, 得到如下参数 {pathanem:’/’,query:{user:xxx,pass:xxxx}} ?

	url.parse(req.url,true)

# 16、node 服务器如何设置跨域请求和中文乱码?

 res.writeHead(200, {
    'Content-Type': 'application/json;charset=utf-8',
    'Access-Control-Allow-Origin': '*'
  })

# 17、npm 是什么?

   npm是包管理工具

# 18、npm 如何下载 jquery?

npm install jquery@版本号   或者  npm install jquery

# 19、npm 工具下载的包放在哪个文件夹里?

  	node_modules

# 20、npm 如何创建 package.json?

 npm init

# 21、cnpm 和 npm 的区别?我们下载插件一般用哪个?

  npm 下载资源服务器在国外,cnpm下载资源服务器为国内淘宝镜像 。 一般下载用cnpm

# 22 、commonjs 规范,如何导出一个模块?

	module.exports={}

# 23、commonjs 规范,如何导入一个模块?

var module=require(‘模块名或路径’)

# 24、自己仿写 url 模块(能把’/api?user=tom&pass=12345’解析成对象 {pathname:’/api’,query:{user:’tom’,pass:12345}}),遵循 commenjs 规范?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module.exports={
parse:function(str,foo){
var arr=str.split('?');
var pathname=arr[0]
if(foo){
var arr1=arr[1].split('&');
var query={};
for(var i=0;i<arr1.length;i++){
var arr2=arr1[i].split('=');
query[arr2[0]]=arr2[1];
}
}else{
var query=arr[1];
}
return {pathanme:pathname,query:query}
}
}

# 25、npm 包的发布流程?

1
2
3
4
5
6
1.npm login  登录
username:用户名
password:密码
email:邮箱
2.npm publish 发布

# 26、node 服务器如何接受 post 请求?

  var str=””
   req.on(‘data’,function(thunk){
           str+=thunk;
})
   req.on(‘end’,function(){
})

# 27.get 与 post 区别?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
历史	参数保留在浏览器历史中。	参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

1. get是从服务器上获取数据,post是向服务器传送数据。


2. GET请求把参数包含在URL中,将请求信息放在URL后面,POST请求通过request body传递参数,将请求信息放置在报文体中。


3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。


4. get安全性非常低,get设计成传输数据,一般都在地址栏里面可以看到,post安全性较高,post传递数据比较隐私,所以在地址栏看不到, 如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。


5. GET请求能够被缓存,GET请求会保存在浏览器的浏览记录中,以GET请求的URL能够保存为浏览器书签,post请求不具有这些功能。


6. HTTP的底层是TCP/IP,GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。


7.GET产生一个TCP数据包,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);POST产生两个TCP数据包,对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

# 28、express 搭建服务器完成案例(注意:视图文件的配置,视图文件引擎的配置,静态资源文件的配置)(录屏)?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
一.首先创建app.js文件如下:
//加载express模块
var express=require("express");
// 创建app服务器 等同于 http.createServer()
var app=express();
//加载路由模块
var IndexRouter=require('./routes/index.js');
var RouterHome=require('./routes/home.js')
//导入path模块(处理路径的模块)
var path=require("path");
//加载ejs模板
var ejs=require("ejs");
//配置 视图文件位置
app.set("views",path.join(__dirname,"views"));
//配置 视图文件引擎
app.set('view engine','ejs')
//设置静态资源文件位置
app.use('/public',express.static(path.join(__dirname,'public')))
//指定ip或域名 (本地ip:127.0.0.1等同于本地域名localhost)
var ip='127.0.0.1';
//指定端口
var port=3000;
//app服务器监听端口
app.listen(port,ip,function(){ //app服务器监听端口
console.log("服务器运行在http://"+ip+":"+port)
});
//配置 一级路由规则
app.use('/',IndexRouter)
app.use('/a',RouterA)
//404处理
function fn(req,res){ // app添加 get请求根路径的路由
// res.send("hello world");// 向前台输出
console.log(req.url)
res.write("404");
res.end()
}
二.安装依赖 express ,ejs
三.创建views(视图文件),public(静态资源文件),routes(路由文件)文件夹
四.routes下创建路由文件index.js,a.js
//加载express模块
var express = require('express');
//创建router对象
var router = express.Router();
//配置 二级路由
router.get('/', function(req, res, next) {
res.render('index')
});
//导出路由模块
module.exports = router;

# 29、ejs 文件中如何声明变量 a?

 <%  a=100  %>

# 30.ejs 文件中如何使用输入变量 a?

 <%=  a  %>

# 31.ejs 文件中如何引用 外部 ejs 文件(比如:./head.ejs)?

 <%  include ./head.ejs  %>

# 32. 如果 ejs 文件中有数据 list=[{name:’apple’,price:5,address:’烟台’},{name:” 香蕉”,price:8,address:’海南’},… ], 如何用表格将他们展示出来?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 <table border="1">
<thead>
<tr>
<th>水果名</th>
<th>价格</th>
<th>产地</th>
</tr>
</thead>
<tbody>
<% for(var a in list){ %>
<tr>
<td>
<%= list[a].name %>
</td>
<td>
<%= list[a].price %>
</td>
<td>
<%= list[a].address %>
</td>
</tr>
<% } %>
</tbody>
</table>

# 33、要点:1.path.parse () 解析地址

2.path.normalize()格式化路径 注意'..' 和 '.'
3.path.join() 连接路径
4.path.resolve()  转换为绝对路径

# 34._ _dirname 表示什么?

当前文件所在目录

# 35._ _filename 表示什么?

当前文件路径

# 36. var str=‘c:\wamp\www\a.html’;

1
2
3
4
5
6
var obj=path.parse(str);
请写出obj.base,obj.ext,obj.dir,obj.name的值?
obj.base==‘a.html’
obj.ext==’.html’
obj.dir==’c:\\wamp\\www\\’
obj.name==’a’

# 37.console.log (path.normalize (’/test/test1//abc/tab/…’)); 输出结果?

‘/test/test1/abc/’

5.console.log(path.join('/test', 'test1', 'home/api', 'tab', '..'));输出结果?
‘/test/test1/home/api/’

# 38、全局安装 express-generater 指令是?

cnpm install express-generator -g 
或者
npm install express-generator -g

# 39、express 创建项目 test 指令?

express -e test

# 40. express 创建的项目中文件夹和文件有哪些?各自含义?

app.js 是主文件  
package.json 是配置文件  
bin启动文件    
public静态资源文件    
routes路由    
views是视图文件   
node_modules 项目依赖

# 41、命令行启动 mongodb 数据库服务器在 27017 端口上的指令是(数据库位置 c:/data/db)?

  mongod --dbpath c:/data/db --port 27017 

# 42、命令行连接数据库数据库服务器的指令是(本地服务器,端口 27017)?

mongo --port 27017 

# 43 、命令行查看数据库的指令?

show dbs

# 44、命令行查看当前数据库集合的指令?

 show collections

# 45、命令行向 user 集合添加文档 {user:tom,pass:123456} 的指令?

db.user.insert({user:’tom’,pass:123456});

# 46. 命令行查询 user 集合中所有文档?

  db.user.find()

# 47、命令行查询 user 集合中 age 大于 18 且小于 20 的文档?

db.user.find({age:{$gt:18,$lt:20}})

# 48、命令行更新 user 集合中 name 为‘李四’的文档,sex 改为女,其他字段不变?

db.user.update({name:’李四’},{$set:{sex:’女’}})

# 49、命令行删除 user 集合中 age 大于 20 且性别 sex 不为女的所有文档

  db.user.remove({$and:[{age:{$gt:20}},{sex:{$ne:’女’}}]})
   或
  db.user.remove({age:{$gt:20},sex:{$ne:’女’}})

# 50、请简述 mongoose 是什么及作用?

1
2
3
Mongoose是封装了MongoDB操作的一个对象模型库
作用是连接后台服务器与数据库服务器,操作数据库
(增删改查)

# 51、安装 mongoose 指令?

cnpm install mongoose --save

# 52、mongoose 连接数据库的代码?

1
2
3
4
5
   mongoose.connect(‘mongodb://127.0.0.1:27017/dbname’,function(err){
If(!err){
console.log(‘数据库连接成功’)
}
})

# 53、请简述 mongoose 中 schema、model、entity 概念?

	
1
2
3
4
5
6
7
8
9
10
11
12
Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

Model : 由 Schema 发布生成的集合模型,具有抽象属性和行为的数据库操作能力


Entity : 由 Model 创建的实体,他的操作也会影响数据库。
5、创建一个Schema,数据结构为user字符串类型,txt字符串类型,另添加时间戳?
var mongoose=require('mongoose');
var Schema=mongooe.Schema;
var myschema=new Schema({user:String,txt:String},{timestamps:true});
module.exports=mySchema;

# 54、创建 model 模型,集合名为 User(model 中所用到的 schema 路径为 …/schema/user.js)?

1
2
3
4
var mongoose=require('mongoose');
var mySchema=require('../schema/user');
var User=mongoose.model('User',mySchema);
module.exports=User;

# 55. 若通过 mongoose 创建的集合模型为 User,User 集合添加一条文档 {user:’tom’,txt:’hello world’},添加成功后重定向‘/’路径?,

1
2
3
4
5
User.create({user:’tom’,txt:’hello world’},function(err,data){
If(!err){
res.redirect(‘/’)
}
})

# 56、若通过 mongoose 创建的集合模型为 User,请使用实体(entity.save ())的方式向 User 集合中添加一条文档 {user:’tom’,txt:’hello world’},添加成功后重定向‘/’路径?

1
2
3
4
5
6
var entity=new User({user:’tom’,txt:’hello world’});
entity.save(function(err,data){
If(!err){
res.redirect(‘/’)
}
})

# 57、若通过 mongoose 创建的集合模型为 User,User 查询所有文档,查询成功后渲染 index 文件,(res.render (‘index’,{list:data}) )?

1
2
3
4
5
     User.find({},function(err,data){   
If(!err){
res.render(‘index’,{list:data})
}
})

# 58、若通过 mongoose 创建的集合模型为 User,User 集合删除 {_id:12345} 的集合,删除成功后重定向‘/’路径?

1
2
3
4
5
	User.remove({_id:12345},function(err,data){
If(!err){
res.redirect(‘/’);
}
})

# 59、若通过 mongoose 创建的集合模型为 Student,Student 集合删除 {_id:12345} 的集合,删除成功后向前端响应 json 数据为 {code:1,msg:” 删除成功”}?

1
2
3
4
5
Student.remove({_id:12345},function(err,data){
If(!err){
res.json({code:1,msg:’删除成功’})
}
})

# 60、若通过 mongoose 创建的集合模型为 Student,Student 集合修改 {_id:12345} 的集合,把 sex 修改为’女’,修改成功后向前端响应 json 数据为 {code:1,msg:” 修改成功”}?

1
2
3
4
5
Student.update({_id:12345},{$set:{sex:’女’}},function(err,data){
If(!err){
res.json({code:1,msg:’修改成功’})_
}
})

# 61、Node 提供的系统模块 url,用那个方法可以将路径转化为对象方便使用?

1
2
3
4
5
6
7
8
  url.parse()
1、url模块的使用
将请求地址解析成对象。
3、请使用http搭建一个最简单的服务器,直接写代码?
var http=require(‘http’);
var server=http.createServer(function(req,res,next){
//业务逻辑 })
server.listen(3000,function(err){if(!err){console.log(‘服务器运行在3000端口上’)}})

# 62、nodejs 中的全局对象是谁?有全局对象 window 么?

个劳保   global     nodejs中没有window对象

# 63、如何给 input 绑定键盘事件?

Input.onkeydow(function(){})

# 64、未知宽高垂直水平居中?

 给父元素设置绝对定位,子元素相对定位,子元素left:50%;top:50%;    margen-left:-本身宽度一半;margen-top:-本身高度一半

# 65、请简述同步异步的区别?

1
2
3
4
异步:在一件事情没有做完,可以接着做另外一件事  非阻塞
同步:一件事情没有做完,就不可以做下一件事 阻塞。
同步案例:for循环语句,alert() 等
异步案例:定时器,ajax异步请求

# 66、请简述 commonjs 规范中模块导入和导出语法?

	模块导出: module.exports={}
  模块导入:   require(‘路径’)

# 67、使用模块的好处?

   封装模块,可以提高开发效率,提高代码复用率。

# 68、如果要全局安装 express-generator 使用的命令是?

cnpm  i  express  -generator

# 69、如何使用 express 创建一个项目?

express myname

# 70、如何启动 express 项目?

npm start

# 71、为什么 npm start 可以启动 express 项目?

在配置文件 package.json里 指定子bin 启动文件 可以启动

# 72、express 项目中 public 目录的作用是?

静态资源文件 html css js img

# 73、Routes 目录的作用是?

路由  包括前后台交互接口

# 74、views 文件夹的作用是?

视图文件  前端模板页面

# 75、app.js 文件的作用是?

主文件 入口文件

# 76、bin 目录的作用是?

存放启动项目的脚本文件

# 77.express 创建项目 test,请写出指令?

Express –e test

# 78、下载 mongoose 中间件并写入 dependecies,请写出指令?

Cnpm install mongoose --save

# 79、mongose 连接数据库,已知数据库服务器地址为:127.0.0.1:27017/book,写出代码?

Mongoose.connect(“mongodb://127.0.0.1:27017/book”,function(err){
If(!err){
             Console.log(“数据库连接成功”)
}
})

# 80、写出 mongoose 中 schema 的创建步骤,数据结构为 {user:String,pass:String}, 请写出代码

Var mongoose = require(“mongoose”);
Var Schema = mongoose,Schema;
Var myschema = new Schema({user:String,pass:String});
Module.exports = myschema

# 81、写出 mongoose 中 model 的创建过程?

Var  mongoose = require(“mongoose”);
Var myschema = require(“../schema/user.js”);
Var User = mongoose.model(“User”,myschema);
Module.exports = User;

# 82、User 集合插入文档 {a:100,b:’hello’}, 写出代码?

User.create({a:100,b:’hello’})

# 83、User 集合删除 name 为‘张三’的所有文档,写出代码?

User.remove({name:“张三”})

# 84、User 集合中,把 {name:’张三’} 的那个文档中 age 改为 20,写出代码?

User.updateOne({name: “张三”},{$set:{age:20}})

# 85、User 集合中,查找所有年龄大于 20 的文档,写出代码?

1
2
3
4
5
6
7
8
9
10
11
12
User.find({age:{$gt:20}})
10、User集合中,查找所有sex为’女’的文档,写出代码?
User.find({sex:“女”})


LocalStorage和sessionStorage是HTML5新增加的web机制
1. Localstorage生命周期长必须手动才能清除
2.Sessionstorage的生命周期是从页面开启到页面关闭
3.内存方面:Localstorge和Sessionstorge是5M cookie是5K
4.cookie的使用会占用过多的带
5. Session存储的位置 不在客户端而是服务器端
6. Session比cookie更安全隐秘

Web 服务器可以用来解析我们的 http 请求 给我们做出相对应的响应与反馈

更新于

请我喝[茶]~( ̄▽ ̄)~*

高祥 微信支付

微信支付

高祥 支付宝

支付宝

高祥 贝宝

贝宝