vue写页面:
1、使用iview组件Form ,给Form-item 添加label 属性,报错:[Vue warn]: Error in render: “TypeError: Cannot read property ‘_t’ of undefined”
原因是:使用iview.js的版本太低,替换iview.js 2.0就可以了
2、添加less依赖,可以使用less编辑样式
package.json 中
devDependencies:{
'less':'^2.7.2',
'less-loader':'^4.1.0'
}
3、使用iview组件——Card 边框很浅,原因:最外层的index.html 应有个font-size设置(一般设置为100px)
因为,组件边框的宽的样式的设置是rem
(function(){
var availWidth = window.screen.width;
if(!availWidth){
return 0;
}
availWidth = availWidth <1920?1920:availWidth;//最小宽度1920
var fontSize = parseFloat(100/1920*availWidth,10).toFixed(2);
var root = document.documentElement || document.body;
root.style.fontSize = fontSize+"px";
return fontSize;
})()
4、某些iview组件绑定click事件无效。解决办法:@click.native="clickFun"
.native—监听组件根元素的原生事件,主要是给自定义的组件添加原生事件
<Card @click.native="addFun">
<Icon type='plus-round" size="50">
</Card>
5、表单校验:
(1)Form标签添加绑定元素:model
(2)Form-item标签设置属性prop,并设置属性rules
<Form ref="addForm" :model="card">
<Form-item label="服务器名称" prop="name" :rules="validation.name">
<Input v-model="card.name">
</Form-item>
</Form>validation:{ name:{ type:'string',pattern:/^(([1-9]\d{0,3})|0)(\.\d{0,2})?$/, message:'数量应为正浮点数且不超过9999.99', trigger:'blur' }}
(3)js中提交按钮事件,对整个表单进行校验,返回的参数为boolean值,代表成功或者失败
如果表单为循环列表中的表单,需要 this.$refs.addForm[index]
this.$refs.addForm.validate(valid => {
if (valid) {
//处理事件
}
});
node编写接口:
思路:拦截接口的编写:使用post或get请求接口,使用node中fs对json文件读或写操作,最后将接口代理到项目中,使用ajax进行访问接口
1、node的http服务 参考:https://www.cnblogs.com/xzsz/p/9066305.html
var conf = require("../conf_files")
var app = require(conf.app);
var http = require("http");//引入http模块
var server = http.createServer(app);//创建http服务
server.listen(port);
server.on('error',onError);
server.on('listening',onListening);
2、使用express编写接口 参考地址:https://blog.csdn.net/qq_43697072/article/details/86160770 https://www.jianshu.com/p/1d92463ebb69
当一个路由有很多子路由时,使用app.use(path,router) //当url地址跳转到path时,被拦截。router路由对象中的路由都会匹配到path路由后面
var express = require('express');
var app = express();
const config = require('../router/config')
app.use('/getConfig',config) //router路由对象中的路由都会匹配到/getConfig路由后面
3、使用router写中间件及接口功能 参考地址:https://blog.csdn.net/haochangdi123/article/details/81480212
router目的是中间件和路由分离的实例 config.js
var express=require("express");
var fs = require("fs");
var path = require("path");
var router = express.Router();
var config = './../conf_files/config.json';//注意“./”
router.post('/add',function(req,res,next){
//操作文件
})
4、操作文件 使用node中的fs 参考地址:http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback
(1)读取文件内容
fs.readFile(path[, options], callback)
fs.readFile(path.join(__dirname + config),'utf8',function(err,data){
if(err) {
return res.send(err)
}
//设置响应的http状态,并向浏览器发送数据
res.status(200).send(data);
})
(2)将数据写入到文件中
fs.writeFile(file, data[, options], callback)
fs.readFile(path.join(__dirname + config),data,function(err){
if(err) {
return res.send(err)
}
console.log("文件已保存!")
})
5、post请求,获取请求内容中的参数,使用req.body 但需要使用相关模块body-parser 参考文档:https://www.jianshu.com/p/2cb44dbe5de8
req.query: 解析后的 url 中的querystring,如?name=haha,req.query 的值为{name: 'haha'}req.params: 解析 url 中的占位符,如/:name,访问/haha,req.params 的值为{name: 'haha'}req.body: 解析后请求体,需使用相关的模块,如 body-parser,请求体为{"name": "haha"},则 req.body 为 {name: 'haha'}
app.js
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extend:false}))
config.js
var express=require("express");
var fs = require("fs");
var path = require("path");
var router = express.Router();
var config = './../conf_files/config.json';//注意“./”
router.post('/add',function(req,res,next){
let param = req.body;//请求体
})
6、查看接口 get本地可以访问 post接口 需要使用postman进行访问调试
来源:https://www.cnblogs.com/xfpBlog/p/11240741.html