摘要:例如第二步在根目录下也就是中添加一个文件夹,文件夹名称为第一步中二级域名的前缀,也就是然后将你的项目或者其他项目添加入该文件夹中。
项目初始
在一个阳光明媚的下午,学院就业指导老师让我们每个人做一份简历,然后打印上交。后回到宿舍,苦苦在网上寻找,未果。因为不要钱的模板太丑,好看的模板得花钱...,像我等穷逼,哪里有什么闲钱。于是,果断下载了个丑不拉几的模板,打开word随便填了填交了上去......
后来良心隐隐作痛,于是打算开发一款能在线编辑简历的webAPP,就随手将脑海中的想法写了下来:
接下了就是使用vue-cli初始化项目、下载依赖等常规操作...
大家可以去我的GitHub地址,查看具体的项目源码:https://github.com/bjw1234/v_...
欢迎star谢谢各位大佬...
也可以直接点击该网址运行项目:
http://resume.baijiawei.top
我主要把我遇到的一些小问题,以及把配置服务器的过程记录下了,以供以后参考学习使用...
inline-block元素垂直居中.content{ display:inline-block; } .wrapper:before{ content:""; display:inline-block; height:100%; vertical-align:middle; } .content{ vetical-align:middle; }自定义组件嵌套
在组建中使用
通过v-for指令渲染时,图片的路径需要父组件动态传递,父组件只是传过来的图片的名称。这时我们可以这样做:
// val是一个函数 val(icon){ return require("./"+icon); }plceHolder改变其颜色
::-webkit-input-placeholder { /* WebKit browsers */ color: #fff; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #fff; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #fff; } :-ms-input-placeholder { /* Internet Explorer 10+ */ color: #fff; }非父子组件之间通信
思路:创建一个事件中心,相当于中继站,可以用来传递事件和接收事件。
// 在main.js中,将这个事件中继站添加到Vue的原型链上 Vue.protype.$hub = new Vue(); // 在不同组件之间通过这个中继站收发数据 // 组件A发数据 this.$hub.$emit("saveAs", "png"); // 组件B接收数据 created: function () { this.$hub.$on("saveAs", (type) => { // 执行对应的操作 }); }HTML页面以png、pdf格式保存
使用的第三方模块
// 下载模块 npm install jspdf html2canvas --save-dev
具体实例
// 用户点击保存 saveAsType(type) { // png保存 if (type === "png") { let resume = document.getElementById("pageDefault"); html2canvas(resume).then(function (canvas) { canvas.toBlob(function (blob) { fileSaver.saveAs(blob, "Resume.png"); }); }); } // pdf保存 if (type === "pdf") { let resume = document.getElementById("pageDefault"); html2canvas(resume).then(function (canvas) { // 通过html2canvas将html渲染成canvas,然后获取图片数据 let imgData = canvas.toDataURL("image/jpeg"); // 初始化pdf,设置相应格式 let doc = new JsPDF("p", "mm", "a4"); // 这里设置的是a4纸张尺寸 doc.addImage(imgData, "JPEG", 0, 0, 210, 297); // 输出保存命名为content的pdf doc.save("resume.pdf"); }); } }ES6模块 Modules
在模块中可以使用import和export关键字。
注意: export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。
想要导出模块的功能有很多方法,其中最简单的方式是添加export关键字。
// 导出方法 export function a(){ // xxxxx } // 导出类 export class Person { // xxxxx } // 报错 var m = 1; export m; // 写法一 export var m = 1; // 写法二 var m = 1; export {m}; // 写法三 var n = 1; export {n as m}; // 这三种写法都是正确的。 // 报错 function f() {} export f;
或者也可以采用这样的方式:
export {detectCats, Kittydar}; // 此处不需要 `export`关键字 function detectCats(canvas, options) { ... } class Kittydar { ... }
你可以导出所有的最外层函数、类以及var、let或const声明的变量。
在另一个模块中导入其他模块。
import { a, Person } from "xxxx.js";
重命名import和export
导入时的重命名
// 基本语法 import { 模块名称 as 重名后的名称 } from "xxxx.js"; import {flip as flipOmelet} from "eggs.js";
当然,导出时也可以重命名
function v1() { ... } function v2() { ... } export { v1 as streamV1, v2 as streamV2, v2 as streamLatestVersion };
Default exports
// b.js export default { // 其中可以加入任何你想加入的内容。 } // a.js import b from "b.js";
模块对象
import * as cows from "cows.js"; // 当你import * 时,导入的其实是一个模块命名空间对象,模块将它的所有属性都导出了。 // 所以如果“cows”模块导出一个名为moon()的函数,然后用上面这种方法“cows”将其全部导入后, // 你就可以这样调用函数了:cows.moo()。
聚合模块
有时一个程序包中主模块的代码比较多,为了简化这样的代码,
可以用一种统一的方式将其它模块中的内容聚合在一起导出,
可以通过这种简单的方式将所有所需内容导入再导出:
// world-foods.js - 来自世界各地的好东西 // 导入"sri-lanka"并将它导出的内容的一部分重新导出 export {Tea, Cinnamon} from "sri-lanka"; // 导入"equatorial-guinea"并将它导出的内容的一部分重新导出 export {Coffee, Cocoa} from "equatorial-guinea";Vue style的scope属性
当
转换结果:
混用本地和全局样式hi
你可以在一个组件中同时使用有作用域和无作用域的样式:
子组件的根元素
使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件有作用域的 CSS 和子组件有作用域的 CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。
深度选择器如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符。
有些像 Sass 之类的预处理器无法正确解析 >>>。这种情况下你可以使用 /deep/ 操作符取而代之——这是一个 >>> 的别名,同样可以正常工作。
CentOS下安装Nginx并部署Node项目、vue项目 安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool pcre pcre-devel openssl openssl-devel使用wget命令下载 Nginx
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz解压
tar -zxvf nginx-1.12.2.tar.gz cd nginx-1.12.2配置
// 使用默认配置 ./configure编译安装
make make install // 查找安装路径 whereis nginx启动、停止 Nginx
cd /usr/local/nginx/sbin/ ./nginx ./nginx -s stop ./nginx -s quit ./nginx -s reload ./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。 ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。 查询nginx进程: ps aux|grep nginx重启 Nginx
1.先停止再启动(推荐):
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。
如下:
./nginx -s quit ./nginx
2.重新加载配置文件:
当 nginx的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,
执行以下命令即可:
./nginx -s reload
启动成功后,在浏览器可以看到这样的页面:
如果操作正确的话,按照以上的命令已经安装好了Nginx。
部署Node项目// 启动项目 pm2 start app.js // 该项目运行在8080端口上
打开 /usr/local/nginx/conf/nginx.conf文件:
添加以下内容:
server { listen 80; #域名 server_name baijiawei.top www.baijiawei.top; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection ""; #代理地址 proxy_pass http://127.0.0.1:8080; root blog; } }重新载入配置文件
./nginx -s reload
OK,那么现在就可以通过自己配置的域名进行访问啦!
ps:
我的顶级域名:http://baijiawei.top
当然为了更好的利用域名资源,也可以使用二级域名:
例如:
http://blog.baijiawei.top
http://resume.baijiawei.top
Nginx配置二级子域名
第一步去自己域名控制台添加解析,这里以添加resume前缀为例:
我用的是阿里云服务器,在控制面板点击添加域名,输入域名名称点击确定即可。 例如:(resume.baijiawei.top)
第二步在nginx根目录下也就是nginx/html中添加一个文件夹,文件夹名称为第一步中二级域名的前缀,也就是resume,
然后将你的Vue项目或者其他项目添加入该文件夹中。
添加配置文件
进入 /usr/local/nginx/conf/目录下:
打开nginx.conf配置文件,添加以下内容:
# 基于Vue的resume项目 server { listen 80; # 监听的端口号 server_name resume.baijiawei.top; # 二级域名 location / { root html/resume/dist; # 你的项目地址 index index.html index.htm; # 入口文件 } error_page 404 /404.html; # 404 error_page 500 502 503 504 /50x.html; # 服务器端错误页面 location = /50x.html { # 页面地址 root html; } } # 当然还有一些其他的配置项, # 可以依据需要自行添加。 #第四步
重新加载nginx配置文件,就可以开开心心在电脑上去访问自己的项目啦。
./nginx -s reload
大家可以去我的GitHub地址,查看具体的项目源码:https://github.com/bjw1234/v_...
文章写到这里差不多就可以结束啦......
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93979.html
摘要:版社区假若本项目能给到你一点点帮助,求在线地址扫码二维码体验更佳推荐满大街的重写,这个有什么亮点比较接近原生体验流畅的加载过渡效果舒服细腻的样式布局合理的列表渲染优化为什么还要重写版的主要是练手,熟悉全家桶超级好用组件库,做一个最佳实践案例 Vue2版CNode社区WebApp 假若本项目能给到你一点点帮助,求Star! Github:https://github.com/Ryqsky...
摘要:基于的版本和编写的模仿原生应用的源码地址欢迎项目演示地址建议直接添加到主屏幕端体验差一些前言为什么做这个项目学习全家桶,很长一段时间在用。作者声称之后增强了对的支持,探究在中的支持情况。 vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp.源码地址 欢迎star 项目演示地址 showImg(https://segment...
摘要:简历的存在只有一个目的帮你约到面试。即使你通过其他方式获得了面试,当你入职的时候,还是要有这么一份纸质简历的,所以不要想着偷懒。在该系统上线后,前端性能从提升到,服务器由台减少到台通过量化的数字来增强可信度。 简历的本质 原文地址在写简历之前,我们必须清楚的了解一件事情,那就是简历是什么?它不是人生履历,不是项目清单,也不是技能大放送。简历的存在只有一个目的 —— 帮你约到面试。只要能...
摘要:简历的存在只有一个目的帮你约到面试。即使你通过其他方式获得了面试,当你入职的时候,还是要有这么一份纸质简历的,所以不要想着偷懒。在该系统上线后,前端性能从提升到,服务器由台减少到台通过量化的数字来增强可信度。 简历的本质 原文地址在写简历之前,我们必须清楚的了解一件事情,那就是简历是什么?它不是人生履历,不是项目清单,也不是技能大放送。简历的存在只有一个目的 —— 帮你约到面试。只要能...
阅读 2649·2021-11-11 16:54
阅读 3621·2021-08-16 10:46
阅读 3424·2019-08-30 14:18
阅读 2984·2019-08-30 14:01
阅读 2699·2019-08-29 14:15
阅读 1979·2019-08-29 11:31
阅读 3055·2019-08-29 11:05
阅读 2562·2019-08-26 11:54