同步操作将从 rufeike/vue3.0项目开发 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Node环境安装 安装地址: https://nodejs.org/en/download/
查看版本号
node -V
和npm -v
出现版本号即可,要求版本node8.9或以上版本,安装nodejs时,会同时安装npm
包管理工具
管理nodejs版本(可以不安装)
执行安装命令:
npm install -g n
n lastest (把nodejs升级到最新版本)
n stable (把nodejs升级到最新稳定版本)
n 后面也可以跟随版本号,如:
n v0.10.26
或n 0.10.26
全局安装VUE3.0脚手架
卸载:如果已经全局安装了旧版本的vue-cli(1.x或2.x),需要先卸载:
npm uninstall vue-cli -g
安装:
npm install -g @vue/cli
查看版本:
vue -V
,出现版本号,即安装成功。如果没有显示,可以先重启电脑看。兼容2.0:
npm install -g @vue/cli-init
安装4.0版本对2.0版本桥接
安装淘宝镜像 cnpm
由于npm包源在国外,可以安装国内的镜像进行提速
npm install cnpm -g --registry=http://registry.npm.taobao.org
也可以设置npm包源
npm config set registry http://registry.npm.taobao.org
github(gitee)
github:https://github.com/
gitee: https://gitee.com/
git基础命令
git clone <仓库地址>
git branch <name>
git checkout -b <name>
git branch --list
git branch -a
git status
git add .
git commit -m '提交内容描述或备注'
git pull
git push origin <分支名称>
工作目录中分支管理
与gitee仓库为例
登录gitee创建一个空项目,然后拷贝
本地选择项目开发位置把项目克隆到本地 git clone 远程项目地址
创建项目分支git checkout -b dev
$ git checkout -b dev
Switched to a new branch 'dev'
rufeike@DESKTOP-EGQ6CJV MINGW64 /e/vue/vue30_project_development (dev)
把分支推送到远程服务器 git push
再执行 git push --set-upstream origin dev
注意,在把分支推送到远程服务器时,如果分支中有新内容,推送时会报以下错误,可以先把内容使用
git add
和git commit
命令添加,后再推送
vue create .
node-sass
npm run serve
运行项目vue.config.js
在项目更目录中,新建
vue.config.js
文件,内容如下,用于配置项目的相关配置。
const path = require('path')
module.exports = {
publicPath: './', // 基本路径
outputDir: 'dist', // 输出文件目录
lintOnSave: true, // eslint-loader 是否在保存的时候检查
// see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
// webpack配置
chainWebpack: (config) => {
},
configureWebpack: (config) => {
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
config.mode = 'production'
} else {
// 为开发环境修改配置...
config.mode = 'development'
}
Object.assign(config, {
// 开发生产共同配置
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
'@c': path.resolve(__dirname, './src/components'),
'@p': path.resolve(__dirname, './src/pages')
} // 别名配置
}
})
},
productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
// css相关配置
css: {
extract: true, // 是否使用css分离插件 ExtractTextPlugin
sourceMap: false, // 开启 CSS source maps?
loaderOptions: {
sass: {
prependData: `@import "./src/assets/styles/main.scss";`
}, // 这里的选项会传递给 css-loader
// postcss: {} // 这里的选项会传递给 postcss-loader
}, // css预设器配置项 详见https://cli.vuejs.org/zh/config/#css-loaderoptions
modules: false // 启用 CSS modules for all css / pre-processor files.
},
parallel: require('os').cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。
pwa: {}, // PWA 插件相关配置 see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
// webpack-dev-server 相关配置
devServer: {
open: process.platform === 'darwin',
host: '0.0.0.0', // 允许外部ip访问
port: 8080, // 端口
https: false, // 启用https
overlay: {
warnings: true,
errors: true
}, // 错误、警告在页面弹出
proxy: {
'/api': {
target: 'http://www.baidu.com/api',
changeOrigin: true, // 允许websockets跨域
// ws: true,
pathRewrite: {
'^/api': ''
}
}
} // 代理转发配置,用于调试环境
},
// 第三方插件配置
pluginOptions: {}
}
./src/assets
目录下,新建styles
目录,用于存储公共css样式文件。vue.config.js
中配置公共css引入目录// css相关配置
css: {
extract: true, // 是否使用css分离插件 ExtractTextPlugin
sourceMap: false, // 开启 CSS source maps?
loaderOptions: {
sass: {
prependData: `@import "./src/assets/styles/main.scss";`
}, // 这里的选项会传递给 css-loader
// postcss: {} // 这里的选项会传递给 postcss-loader
}, // css预设器配置项 详见https://cli.vuejs.org/zh/config/#css-loaderoptions
modules: false // 启用 CSS modules for all css / pre-processor files.
},
css
文件改成后缀名为scss
,在增加一个main.css
作为所有css的主引入文件
normalize.css
,改名为normalize.scss
,并在main.scss
中引入。@import "./normalize.scss";
地址:https://element.eleme.cn/#/zh-CN
npm i element-ui -S
可以按需导入和完整导入,本项目采用完整导入
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// 引入ElementUI
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ElementUI);
// 引入公共组件
import "./components";
Vue.config.productionTip = false;
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");
网址:https://vue-composition-api-rfc.netlify.com
需要依赖Composition API 安装依赖:
npm install @vue/composition-api --save
main.js
引入
import VueCompositionApi from '@vue/composition-api';
Vue.use(VueCompositionApi);
const obj = reactive({count:0});
内部值并返回一个响应新且可以改变ref对象。ref对象具有value指向内部值的单一属性
const number = ref(0);
console.log(number.value); //取值方式
isRef
和toRefs
检查一个对象是否时ref对象
// isRef 举例
const unwrapped = isRef(foo)?foo.value.foo;
//toRefs举例
function useMousePosition(){
const pos = reactive({
x:0,
y:0
})
return toRefs(pos);
}
const {x,y} = useMousePosition();
toRefs 把reactive对象转为普通对象后,才能进行解构或拓展运算符不会丢失原有的响应对象的响应。
安装指令
npm install axios --save
新建一个工具js文件,如
request.js
import axios from 'axios';
const nodeEnv = process.env.NODE_ENV;
let baseURL = '';
if(nodeEnv == 'development' ){
baseURL = "https://www.rufeike.top";
}else if(nodeEnv == 'production') {
baseURL = "https://www.rufeike.top";// 生产开发接口
}
// 创建axios,赋值位service
const service = axios.create({
baseURL: baseURL,
timeout: 1000
});
// 添加请求拦截器
service.interceptors.request.use(function (config) {
// 在发送请求之前需要做什么
return config;
}, function (error) {
// 请求错误时
return Promise.reject(error);
});
// 添加响应拦截器
service.interceptors.response.use(function (response) {
// 对响应结果进行处理
return response;
}, function (error) {
// 响应错误
return Promise.reject(error);
})
export default service;
新增两个配置文件,可以方便生产和开发不同环境的不同配置,注意配置文件修改时,需要重启项目才能读取相关配置。
.env.development
开发环境变量量配置文件.env.production
生产环境变量量配置文件APP_NAME = rfApp
读取数据方式
process.env.配置名称
参考同目录文件 vuex使用说明
参考同目录文件 vue引入阿里字体图标库;
npm install cookie_js --save
简单用法
import cookie from "cookie_js";
// 存储
cookies.set("name", "value"); // 普通设置
cookies.set("name", "value", { expires: 7, path: '' }); // expires:7天过期 , path: 应用的页面路径
cookies.set("name", { foo: "bar" }); // 设置一个json
// 取值
cookie.get("键"); // 获取指定键名的cookie
cookie.get(); // 获取所有
// 移除
cookie.remove("键");
参考同目录文件 路由跳转前控制-路由守卫.md;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。