Vue项目在Nginx下部署

前提:nginx可正常启动

1.切换目录到nginx配置目录下:cd /usr/local/nginx/conf
2.编辑nginx.conf文件:vi nginx.conf
3.主要进行service部分配置即可:
server
{
listen 8081;#监听端口,即配置好之后用来访问项目的端口
server_name localhost;#域名,没有就localhost吧,写ip也可以
root /app/vue/;#站点目录,该目录为vue项目编译后的静态资源放置目录,即build后dist下的文件copy到/app/vue/下
index index.html;
location ^~/vue { #过滤请求前缀为vue的进来这里,此处正则可以百度到
alias /app/vue;
try_files $uri $uri/ /vue/index.html;
}
location /api/ { #这里主要进行后端接口的代理转发,将包含api的请求全部转发到下面的连接,需开发环境就采用代理模式
proxy_pass http://110.120.130.140:0000/;

#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
access_log off;
}
4.保存修改并退出
5.切换到执行目录下:cd ../sbin
6.更新nginx引用的配置 ./nginx -s reload
7.如果无信息显示则说明执行成功,否则启动nginx,如显示配置的端口信息则说明更新成功: ./nginx read more

ColaUI组件过滤设置

ColaUI配合后端BDF2框架共同实现组件级权限控制

在请求页面资源时通过js代码对页面进行权限过滤
<!--测试组件-->
<div id='test'></div>
(function() {
	cola(function(model) {
        var role_resource_data={
            url:'/html/test.html',
            ids:['test']
        };
    //其它代码
    App.resetComponentAuth(role_resource_data);
  });
}).call(this);
注意事项:
1.对应id组件上方如果不加注释,那么在进行角色组件资源设置时显示的是id;
  添加注释后则显示注释中的内容
2.url对应值为要控制的页面路径,从webapp下开始写
3.ids为要控制的页面中的id组件集合,不写入则组件控制无效
4.在其他代码部分不能出现return,例如return model.widgetConfig({...});
  否则代码不执行最后一行,无法进行组件过滤
5.最后一行代码进行了数据库访问,对组件权限信息进行获取,并刷新页面

Canvas实现圆圈移动

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="Justin">
  <meta name="Keywords" content="canvas">
  <meta name="Description" content="canvas study">
  <title>canvas_study</title>
 </head>
 <body>
 <div>
	<canvas id="test" width="600" height="600" 
          style="border:1px solid #000000;margin-left:300px"></canvas>
 </div>
 </body>
</html>
<script>
        //用于保存鼠标移动前的坐标
	var x=-100;
	var y=-100;
	//获取鼠标当前位置
	function mousePosition(ev){
	   if(ev.pageX || ev.pageY){
	     return {x:ev.pageX, y:ev.pageY};
	   }
	   return {
	     x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
	     y:ev.clientY + document.body.scrollTop - document.body.clientTop
	   };
	}
	document.onmousemove = mouseMove;
	
	var c=document.getElementById("test");
		var ctx=c.getContext("2d");
		//线
		ctx.moveTo(0,0);
		ctx.lineTo(600,600);
		ctx.moveTo(0,600);
		ctx.lineTo(600,0);
		ctx.stroke();
        //鼠标移动时执行
	function mouseMove(ev){
		 ev = ev || window.event;
		 var mousePos = mousePosition(ev);
		//清除上一个圆
		clear();
		
		
		var c=document.getElementById("test");
		var ctx=c.getContext("2d");

		//线
		ctx.moveTo(0,0);
		ctx.lineTo(600,600);
		ctx.moveTo(0,600);
		ctx.lineTo(600,0);
		ctx.stroke();
                //圆
		ctx.beginPath();
		ctx.arc(mousePos.x-300,mousePos.y,40,0,2*Math.PI);
		ctx.stroke();
		x=mousePos.x;
		y=mousePos.y;
	}

	function clear(){
		var c=document.getElementById("test");
		var ctx=c.getContext("2d");
		ctx.clearRect(0,0,600,600);
	}
	
</script>

Vue组件之间的引用

以下介绍的引用方式只是多个引用方式中的一种

A引用B
<!-- A -->
<template>
  <test></test>
</template>

<script>
  import test from './Eu'

  export default {
    name: 'index',
    components: {
      test
    }
  }
</script>

<!-- B -->
<template>
  <h2>
    引用内容
  </h2>
</template>
<script>
  export default ({
 //此处name是否设置作用不大
    name: 'eu'
  })
</script>

Vue项目中引入ElementUI

前提:
1.该项目为idea中vue项目
2.已安装node和npm

步骤:

1.打开idea的Terminal(cmd或其它也可以)

2.移动到vue项目下

3.执行:npm install element-ui -S
打印日志为:
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

+ element-ui@2.3.9
added 67 packages and updated 1 package in 28.606s

4.可以到项目下的node_modules查看是否有element-ui文件夹

5.在main.js中添加
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)
6.在创建的组件中使用element-ui
<template>
  <div>
    <i class="el-icon-edit"></i>
  </div>
</template>

修改CSS样式或JS之后F12发现资源没有改变

原因:浏览器已缓存过文件,之后浏览器只获取本地文件,不再远程下载

解决办法:
1.修改浏览器缓存设置
2.不知道怎么设置就手动清楚浏览器缓存
3.如清除浏览器缓存无效,则为引用添加版本号

例如:
<link rel="stylesheet" type="text/css" href="CSS/main.css?v2">

注意:
1.问号后可随意编写,但不要重复
2.使用Idea热部署更新会出现错误
4.执行Ctrl+F5重新从服务器端获取资源(作者认为是最简便的方式)