# 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 ) { } })
# 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){ })
<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文件如下: var express=require ("express" ); var app=express();var IndexRouter=require ('./routes/index.js' );var RouterHome=require ('./routes/home.js' )var path=require ("path" );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' ))) var ip='127.0.0.1' ;var port=3000 ; app.listen(port,ip,function ( ) { console .log("服务器运行在http://" +ip+":" +port)}); app.use('/' ,IndexRouter) app.use('/a' ,RouterA) function fn (req,res ) { console .log(req.url)res.write("404" ); res.end() } 二.安装依赖 express ,ejs 三.创建views(视图文件),public(静态资源文件),routes(路由文件)文件夹 四.routes下创建路由文件index.js,a.js var express = require ('express' );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: 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对象
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是5K4. cookie的使用会占用过多的带5. Session存储的位置 不在客户端而是服务器端6. Session比cookie更安全隐秘
Web 服务器可以用来解析我们的 http 请求 给我们做出相对应的响应与反馈