学习VUE的前置知识:HTML、CSS、JavaScript、ES6、nodejs
Vue全家桶:VueCore+Vue-Router+Vuex
v-model指令可以设置单选框/复选框/下拉列表
// 1.一般定义函数function
const a = function(){
}
// 2.通过在对象中定义函数
const obj ={
b:function(){
}
}
// 3.箭头函数定义函数
const c = () =>{
}
// 箭头函数中有多个参数
const sum = (sum1,sum2) =>{
return sum1+sum2
}
// 箭头函数中只有一个参数
const power = num => { // 可以省略参数小括号
return num * num
}
// 箭头函数中有多行代码
const test = () =>{
console.log('Hello World');
console.log('Hello Vuejs');
}
// 箭头函数中只有一行代码
// const mul = (num1,num2) =>{
// return num1*num2
// }
const mul = (num1,num2) => num1*num2; // 简略return和{}
const demo = () => console.log('Hello Demo');
console.log(demo());
// 返回值为console.log('Hello Demo'),类型为undefined.
// 控制台输出结果为 Hello Demo 和 undefined.
// const vue ={
// render:function(h){
// return h(App)
// }
// }
const vue={
render: h => h(App)
}
在箭头函数中this指向与普通函数不同,箭头函数的{}不形成作用域,所以箭头函数中一般没有定义this,需要往外层寻找。
它是在当前作用域中向外层查找,一层层查找直到找到有this的定义的作用域,箭头函数中的this引用的就是其最近作用域中的this。
setTimeout(function(){
console.log(this); //window
},1000)
setTimeout(() =>{
console.log(this); //window
},1000)
const obj = {
test1(){
setTimeout(()=>{
console.log(this);//window
},1000)
},
test2(){
setTimeout(()=>{
console.log(this);//obj
},1000)
}
}
const obj={
name:"zhangsan",
age:18,
height:1.80,
weight:60
}
// 普通写法
// const name = obj.name;
// const age=obj.age;
// const height=obj.height;
// const weight=obj.weight;
// 对象解构写法
const {name,age,height,weight}=obj;
const nums=[10,20,30,40,101,200,5200];
let newNums=nums.filter(function(n){//n为自定义参数
return n<100;
})
console.log(newNums);
let newNums2=nums.map(function(n){
return n*2;
})
console.log(newNums2);
let newNums3= nums.reduce(function(preValue,n){
return preValue+n;
},0)
console.log(newNums3);
Promise是异步编程的一种解决方案。
单线程运行时用户进行了网络请求=>JS代码处理=>发生阻塞=>开启异步请求=>异步请求完成=>回调函数=>返回结果
$.ajax('url1', function (datal) {
$.ajax(datal('url2'), function (data2) {
$.ajax(data2 ('url3'), function (data3) {
$.ajax(data3('url4'], function (data4){
console.log (data4);
})
})
})
})
// promise( (resolve,reject)=>{函数名(){resolve()}} ).then(异步处理结果)
// promise参数:resolve(函数)和reject(函数),内部构造函数
// promise异步网络请求过程为链式编程
new Promise((resolve,reject)=>{
setTimeout(()=>{
// 网络请求成功调用resolve
resolve()
// 网络请求失败调用reject
// reject()
},5000)
}).then(()=>{
console.log("第一次网络请求结果");
// 返回结果的同时,继续进行下一步网络请求
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve()
},1000)
}).then(()=>{
console.log("第二次网络请求结果");
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve()
},1000)
}).then(()=>{
console.log("第三次网络请求结果");
return new Promise((resolve,reject)=>{
setTimeout(()=>{
// 网络请求成功调用resolve
// resolve()
// 网络请求失败调用reject
reject('erro message')
},1000)
}).then(()=>{
console.log("第四次网络请求结果");
}).catch(err=>{
console.log(err);//网络请求失败结果
})
})
})
})
同步:synchronization ; 异步:asynchronization
new Promise((resolve,reject)=>{
setTimeout(function(){
resolve("第一次网络请求")
},5000)
}).then(data=>{
console.log(data);// =>第一次网络请求结果
return data + '+第二次网络请求结果'
}).then(data=>{
console.log(data);// =>第一次+第二次网络请求结果
return data + '+第三次网络请求结果'
}).then(data=>{
console.log(data);// =>第一+二+三次网络请求结果
return Promise.reject(data + 'error')//返回第四次网络请求失败
}).then(data=>{//回调Promise.reject时,这部分代码不会执行
console.log(data);// =>X 前三次+第四次网络请求结果没有输出
return data + '+第四次网络请求结果'
}).catch(data=>{
console.log(data);// =>前三次请求结果+error
return data + '+第五次网络请求结果'
}).then(data=>{
console.log(data);// =>前三次请求结果+error+第五次网络请求结果
})
conponent,组件;extend,扩展;template,模板
封装组件的时候,抽取共性,保留不同。
最好的封装方式就是将共性抽取到组件中,将不同暴露为插槽。一旦我们预留了插槽,就可以让使用者根据需求决定插槽中插入什么内容。插槽内容由调用者来决定。
<div>
<cpn>cpn>
<cpn><button slot='left'>button>
<button slot='right'>button>cpn>
div>
<template id='templateid'>
<div>
<p>组件p>
<slot>(插槽默认值)slot>
<slot name='left'>左插槽slot>
<slot name='center'>中间插槽slot>
<slot name='right'>右插槽slot>
div>
template>
Vue.conponent('cpn',{template:'#templateid'})
其中,isShow属性包含在父组件的作用域中,所以其是否显示由父组件来决定。
父组件替换插槽的标签,但是内容由子组件来提供。
模块化开发的核心:导出和导入
我们可以将需要暴露到外面的变量使用一个模块作为出口,在模块内部给对象添加各种需要暴露到外面的属性和方法,最后将这个对象返回,在外面使用一个moduleX接受。
常见的模块化规范:CommonJS、AMD、CMD、Modules
// 在小明的ming.js工程文件里,模块名moduleA
var moduleA=(function(){
var obj={};//定义一个对象
var flag:true;
obj.flag=flag;//在对象内部添加变量和方法
return obj;//将对象返回
})
// 在小刚的gang.js工程文件里,模块名moduleB
var moduleB=(function(){
var obj={};
var flag:false;
obj.flag=flag;
return obj;
})
// 在项目经理的main.js文件里
moduleA.flag;
moduleB.flag;
module.exports={
sum:10,
falg:false,
sayHi:function(){
console.log('Hello')
}
}
var ming=require(./ming.js)
var sum=ming.sum;//对象解构
var falg=ming.flag;//对象解构
// var {sum,flag}=require(./ming.js);//语法糖
依然是两个核心:导出export,导入import。
在实际开发中,ES6模块化开发是主要实现方案。
// 导出属性和方法:先定义再导出
var name = 'xiaoming';
var age = 18;
var sayHi = function () {
console.log('Hi');
}
export {
name,
age,
sayHi
}
// 导出属性和方法:直接定义导出
export var height = 1.75;
export var weight = 120;
export var sayHello=function(){
console.log('Hello')
}
// 导出函数或类
export function mul(num1, num2) {
return num1 * num2
}
export class Person {
run() {
console.log('Running');
}
}
// 导入export中定义的变量
import {name,age,height,weight} from './ming.js';
// 导入export中的函数或类
import {mul} from './ming.js';
从本质来讲,webpack是一个现代的JavaScript应用的静态模块打包工具。webpack不仅仅是对JavaScript文件进行模块化打包,对于CSS、.img.jpg图片、json文件都可以被当做模块使用进行打包。
将webpack中的各种资源进行打包合并成一个或多个包(bundle)。在打包的过程中,将scss/less转成css,将.jsx/.vue转成JS,将TypeScript或者ES6语法转成ES5语法等等操作。
模块打包工具:gulp、vite、rollup、grunt
webpack:模块化打包工具。
webpack为了可以正常运行,必须依赖node环境。
node环境为了可以正常执行代码,必须依赖npm工具。
npm:(node packages manager),node包管理工具
node -v:Windows cmd中输入命令:“node -v” 查看node版本号。
terminal:终端。Windows终端同步VSCode终端。
webpack --version:查看webpack版本cmd命令。
webpack 入口文件 出口文件
webpack ./src/main.js ./dist/bundle.js
Hash: 58b68b0178a632f7cb8b
Version: webpack 3.6.0
Time: 69ms
Asset Size Chunks Chunk Names
bundle.js 2.79 kB 0 [emitted] main
[0] ./src/main.js 94 bytes {0} [built]
[1] ./src/mathUtils.js 144 bytes {0} [built]
总之,在处理完所有模块之间的关系后,将多个js(./src/main.js)打包到一个js(./dist/bundle.js)文件中,在HTML中引入就非常方便。
第一步需要创建文件夹:webpack.config.js(这个文件夹命名是固定的)。
npm init:初始化
npm init
npm install:安装
npm install
npm run:运行脚本(运行package.json中的scripts脚本代码)
git clone:克隆
dev:开发;
devDependence:开发时依赖
loder的作用:帮助webpack扩展对应的loader使之能够转化更多的文件类型。
loder的使用过程:
# 通过--save-dev开发时依赖安装相应Loader
npm install --save-dev css-loader
npm install --save-dev style-loader
import css from 'file.css';
module.exports = {
module: {
rules: [
{
test: /\.css$/,// 正则表达式
use: [ 'style-loader', 'css-loader' ] // 自右向左加载
}
]
}
}
npm run build
安装vue.js的三种方式:
<script src='./vue.js'>script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js">script>
# 最新稳定版。通过NPM安装Vue.js能够很好的和webpack打包器配合使用。
$ npm install vue
# 这里vue不止有在dev开发时依赖,在后续的实际项目中也会使用到。
npm install vue --save
引入打包后的vue
<div id="app">
<h1>{{message}}h1>
div>
<script src="./dist/bundle.js">script>
import Vue from 'vue'
const app = new Vue({
el:'#app',
data:{
message:'Hello Webpack'
}
})
对vue环境进行打包
npm run build
打包过程中会报错。原因:
在入口HTML文件(main.html)的body中,只保留id=‘app’挂载的div标签和通过webpack打包后src=’./dist/bundle.js’的js文件script标签。
<body>
<div id="app">div>
<script src="./dist/bundle.js">script>
body>
安装vue-loader和vue-template-compoiler
npm install vue-loader vue-template-compiler --save-dev
compiler:编译
const path =require ('path')
const webpack = require ('webpack')
module.exports ={
...
plugins:[newwebpack.BannerPlugin('版权说明')] // plugins跟数组类型,添加此插件可以在budle.js头部看到相关信息。
}
npm install html-webpack-plugin --save-dev
2.2 在webpack.config.js中添加配置
const path=require('path')
const webpack=require('webpack')
module.exports ={
...
// publicPath:'dist/' 需要删掉
plugins:[new HtmlWebpackPlugin({
template:'index.html'//按照index.html自动生成模板并打包到dist文件夹中
})]
}
2.3 从新打包
npm run build
npm install uglifyjs-webpack-plugin --save-dev
3.2 在webpack.config.js中配置
const path=require('path')
const webpack=require('webpack')
const uglifyJsPlugin=require('uglifyjs-webpack-plugin')
module.exports ={
...
plugins:[new uglifyJsPlugin()]
// 查看打包后的bundle.js是被压缩过的,发布阶段才需要压缩。
}
3.3 重新打包
npm run build
本地服务器基于node.js搭建,内部使用express框架,可以实现浏览器自动刷新。
npm install --save-dev webpack-dev-server
在webpack.config.js中配置
const path=require('path')
const webpack=require('webpack')
module.exports ={
...
devserver:{ // devserwer对象属性,与entry{},module{},plugins[]同级
contentBase:'./dist',//表示为哪一个文件夹提供本地服务,默认为根文件夹
// port://端口号,默认为8080
inline:true// 页面实时刷新,布尔值
// historyApiFallback://在SPA页面中,依赖HTML5的history模式
}
}
在本地服务器上运行
node_modules/.bin/webpack-dev-server
package.config.js中配置比较复杂,需要对开发时依赖配置和生产时配置分离。创建三个文件夹:
npm install webpack-merge --save-dev
CLI Command-Line Inertface,翻译为命令行界面,俗称“脚手架”。Vue CLI是一个官方发布vue.js项目的脚手架。
使用vue-cli可以快速搭建Vue开发环境以及对应的webpack配置。
NodeJS官网
Vue CLI官网
# 检测node环境的版本
node -v
# v16.13.0
# 检测npm环境的版本
npm -v
# 8.1.0
# 终端命令-g全局安装Vue CLI 3
npm install -g @vue/cli
# 上面安装的是Vue CLI 3,如果需要拉取Vue CLI 2.x版本的话则:
npm install -g @vue/cli-init
# 检查Vue CLI版本是否正确
vue --version
# @vue/cli 4.5.15
# vue init webpack 项目名
vue init webpack my-project
# 以下依次填入项目信息,根据项目信息创建项目模板
? Project name my-project 项目名称,不能包含大写字母等
? Project description A Vue.js project 项目描述
? Author TUHT 作者信息,会默认从git读取信息
? Vue build runtime 运行时
? Install vue-router? No Vue-路由
? Use ESLint to lint your code? No 监测代码规范
? Set up unit tests No 单元测试
? Setup e2e tests with Nightwatch? No e2e测试:end to end测试,安装nightwatch是一个进行自动化测试的框架
? Should we run `npm install` for you after the project has been created? (recommended) (Use arrow keys)
> Yes, use NPM NPM和Yarn二选一即可
Yes, use Yarn
No, I will handle that myself
# 执行package.json中dev相关命令,如打开本地服务器
npm run dev
# DONE Compiled successfully in 2934ms 下午8:16:34
# I Your application is running here: http://localhost:8080
# 执行package.json中build相关命令,从入口文件开始(build/build.js)执行,对项目进行打包
npm run build
如何关闭:在config/index.js中找到useEslint:true改为false.
二者只在main.js中有区别。runtime-only性能更高,代码量更少。runtime-only比runtime+compiler轻6KB!
// runtime+compiler
// template——>ast——>render——>虚拟DOM——>UI
new Vue({
el:'#app',
template:'',
components:{App}
})
// runtime-only
// render——>虚拟DOM——>UI
new Vue({
el:'#app',
render:h=>h(App)// h:hyperscript
// render:function(h){
// return h(App)
// }
})
# vue creat 项目名称
vue create my-project
Please pick a preset: (Use arrow keys)
# Vue CLI v4.5.15,这里创建的是Vue CLI 4版本
Vue CLI v4.5.15
? Please pick a preset:
Default ([Vue 2] babel, eslint)
Default (Vue 3) ([Vue 3] babel, eslint)
> Manually select features
#手动选择,按空格选中或取消
? Check the features needed for your project:
>(*) Choose Vue version
( ) Babel
( ) TypeScript
( ) Progressive Web App (PWA) Support
( ) Router
( ) Vuex
( ) CSS Pre-processors
( ) Linter / Formatter
( ) Unit Testing
( ) E2E Testing
# 选择一个你想要启动项目的 Vue.js 版本
? Choose a version of Vue.js that you want to start the proje
ct with
2.x
> 3.x
# 你更喜欢把 Babel、ESLint 等的配置放在哪里?
? Where do you prefer placing config for Babel, ESLint, etc.?
(Use arrow keys)
> In dedicated config files
In package.json
# 将此保存为未来项目的预设?
? Save this as a preset for future projects? (y/N)
# Save preset as 命名预设配置
全局安装:npm install -g vue-cli
卸载:npm unstall -g vue-cli
全局安装:npm install -g @vue/cli@版本号
卸载:npm uninstall -g @vue/cli@版本号
# 注:原cli3的安装指令为@vue/cli,因为cli4的出现同样使用了@vue/cli,所以想要安装3的版本,就需要在@vue/cli后面加上@版本号。
# (例:npm install -g @vue/[email protected])
全局安装:npm install -g @vue/cli
卸载:npm uninstall -g @vue/cli
vue init webpack my-package
vue create my-package
npm run dev
npm run serve
npm run serve
INFO Starting development server...
98% after emitting CopyPlugin
DONE Compiled successfully in 1408ms 上午11:21:47
App running at:
- Local: http://localhost:8080/
- Network: unavailable
Note that the development build is not optimized.
To create a production build, run npm run build.
# 在任意目录下打开终端命令窗口
vue ui
# @vue/cli-ui 是 vue-cli 内置的一套成熟的 UI。
# 相比局限的命令行界面,图形化界面更人性化。
路由(routing),是通过互联的网络把信息从源地址传输到目的地址的活动。
路由器(router),是连接两个或多个网络的硬件设备。路由器提供两种机制:路由和转送。
路由表(routing-table),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表本身就是一个映射表,决定了数据包的指向。
SPA(single page web application)页面:单页面富引用
前端路由的核心是改变页面的URL,但是页面不进行整体刷新。实现地址改变页面不刷新的方式有两种:
vue-router官网
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适用于构建单页面应用。
在vue-router构建的单页面应用中,页面路径的改变就是组件的切换。目前前端流行的三大框架中,都有自己的路由实现:
npm install vue router --save
// 配置路由相关信息
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
// 1. 通过Vue.use(插件)安装vue-router
Vue.use(Router)//Router是一个插件,Vue.use(插件)
// 2. 创建vue-router实例对象Router
export default new Router({//导出到main.js中
// 配置路由和组件之间的应用关系
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
}
})
// 3. 将Router传入到Vue实例(main.js)
第一步:创建路由组件:在components组件文件夹中创建路由组件Home.vue和About.vue组件,并通过export default{组件名}导出
首页
第二步:配置路由映射:在router/index.js中配置组件和路径之间的映射关系
import Vue from 'vue'
import Router from 'vue-router'
import Home from '../components/Home'//导入Home.vue
import About from '../components/About'//导入About.vue
Vue.use(Router)//注入插件
export default new Router({//创建路由实例并导出
routes: [
{// 默认路由
path:'',//'':空路径 或者 '/':根路径
redirect:'/home'//redirect重定向
},// 在routes中配置path和redirect映射,实现用户在默认打开网站时,自动进入网站首页。
{
path:'/home', //路径地址
component:Home //组件名
},
{
path:'/about', //路径地址
component:About //组件名
}
],
// 实现页面跳转而不全部刷新的配置mode
mode:'history';// vue-cli2/3配置为history或者hash模式,不配置则默认为hash模式
// mode:'history:creatWebHistory()'//vue-cli4
})
第三步:使用路由组件:在App.vue组件中通过router-link和router-view标签使用路由
// router-link标签是vue-router中内置的组件,router-link会被渲染成一个a标签。
首页
关于
// to属性:指定跳转到的路径
// tag属性:指定渲染成的组件:a(默认)/button/li等
// replace属性:指定以history.replaceState方式跳转
// activeclass属性:给当前元素设置一个class
// router-view标签会根据当前的路径,动态渲染出不同的组件。在路由切换时,切换的是router-view标签挂载的组件,其它内容不会发生改变。
第一步:创建路由组件
用户信息
用户信息动态路由
{{userId}}
第二步:配置路由映射
import Vue from 'vue'
import Router from 'vue-router'
import User from '../components/User'
Vue.use(Router)
export default new Router({
routes: [
{
// 处于活跃的路由
path:'/user/:userId',// 被动态修改的路径
component:User
}
],
const router = new VueRouter({
routes,
mode:'history',
linkActiveClass:'active'
})
})
第三步:使用路由组件
首页
当打包构建应用时,JavaScript包(dist/js文件)会变得非常大,影响页面的加载,导致在页面跳转时会出现短暂空白。
把不同路由对应的组件分割成不同的代码块,然后当路由被访问时才加载对应的组件,从而实现高效在页面之间跳转。
// LearnVueRouter/src/router/index.js
// import Home from '../components/Home'//导入Home.vue
// import About from '../components/About'//导入About.vue
Vue.use(Router)//注入插件
// 方式一:结合Vue的异步组件和Webpack的代码分析
const Home = resolve =>{
require.ensure(['../components/Home.vue'],()=>
{
resolve(require('../components/Home.vue'))
})
}
// 方式二:AMD写法
const About = resolve => require(
[../components/About.vue],resolve
)
// 方式三:ES6写法
const routes = [
// 懒加载组件
{
path:'/home',
component:()=>import('../components/Home')// 实现组件懒加载
},
{
path:'/about',
component:()=>import('../components/About')// 实现组件懒加载
}
]
URL:统一资源定位符
//主机:端口/路径?查询
//host:port/path?query#fragment
./build/webpack.base.conf.js中的路径配置(基于vue-cli3版本以上)
(路径前加波浪号~)import Home from "@/router/index.js"
(路径前加@)module.exports={
...
resolve: {
extensions: ['.js', '.vue', '.json'],// 引用时可忽略的后缀名
alias: {
'@': resolve('src'),//用@符号代替src
'components':resolve('@/components'),//设置组件路径
'assets':resolve('@/resolve')
}
}
}
在js文件中引入时import
在vue文件中引入时@import
组件化开发思想。尽可能将可复用组件抽离到模板中
Vuex是一个专为Vue.js应用程序开发的状态管理模式。
Vuex采用集中式存储管理应用所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
Vuex也集成了Vue的官方调试工具devtools extension,提供了诸如零配置的time-travel调试/状态快照导入导出等高级调试功能。
Devtools:Vue开发的一个浏览器插件。可以访问Google商城下载。
不的话,用"极简插件"搜索vue.js devtools并下载完后,在google浏览器扩展程序中开启开发者模式,然后将解压后的源文件(CRX文件)复制或者拖入到扩展程序面板中。
Vuex简单理解为:Vuex是来进行状态管理的。利用Vuex可以把需要多个组件共享的变量全部存储到一个对象里面,然后将这个对象放在顶层的Vue实例中,让其他组件使用。
比如说:一个大型应用,具有某种状态(用户的登录状态/地理位置信息/用户名称或头像),需要在多个界面中使用这种状态。而这种共享状态信息,可以统一放在一个地方对它进行保存和管理。当在某个界面使用时,可以实现响应式。
第一步:安装Vuex
# vuex是Vue中集成的一个插件
# vuex不只是在开发环境中依赖,也需要在生产环境中依赖
npm install vuex --save
第二步:创建store对象(./src/store/index.js)
// 在新文件夹(./src/store/index.js)中进行调用
// 1. 导入Vue 和 Vuex
import Vue from 'vue'
import Vuex from 'vuex'// 导入Vuex
// 2. 安装Vuex插件
Vue.use(Vuex)//注入Vuex插件,执行Vuex.install方法
// 3. 创建store对象
const store =new Vuex.Store({
state:{// 保存状态
},
// 将共享方法保存在mutations中可以更加明确的追踪状态的变化
mutations:{// 保存方法
increment(state){
state.counter++
},
decrement(state,n){
state.cotuner -= n
}
},
actions:{// 替代mutation进行异步操作
aUpdateInfo(contex){
setTimeout(()=>{
context.commit('updateInfo')
},1000)
}
},
getters:{//类似计算属性
},
modules:{//store模型
moduleA:{
state:{},
mutations:{},
actions:{},
getters:{}
}
}
})
// 4. 导出store对象
export default store
第三步:导入store对象(./main.js)
// 在./main.js文件中导入store对象
import Vue from 'vue'
import App from './App'
import store from './store'// 导入store对象
//通过Vue.prototype将store赋值给$store
Vue.prototype.$store = store
new Vue({
el:'#app',
store,// 挂载store对象
render:h=>h(App)
})
第四步:使用store对象(./components/xxx.vue)
{{count}}
Vuex的store中的state是响应式的,当state中的数据发生变化时,Vue组件会自动更新。
Git是世界上目前最先进的分布式版本控制系统。Git是由Linux之父Linus开发的,最初是为辅助Linux内核开发,来替代BitKeeper版本控制系统。Git是开源、免费的。
git官网
Bit Bash:Linux和Unix风格命令行(推荐)
Git CMD:Windows风格命令行
Git GUI:图形化界面
安装git之后首先要设置用户名称和e-mail地址。
所有的配置文件都在本地文件下C:\Users\个人用户\.gitconfig
git config
# Git用户配置信息
git config --global user.name "TuHongtao"
git config --global user.email 1410048525@qq.com
# 查看系统配置
git config --system --list
# 查看当前用户配置
git config --global --list
Git分为本地三个工作区域和一个Git远程仓库
Git文件在区域之间的转换命令
git add
——>暂存区commit
——>资源库git push
——>远程仓库git pull
——>资源库git reset
——>暂存区git checkout
——>工作目录# 在当前目录新建一个Git代码库并git初始化
$ git init
# 需要在文件中打开隐藏项目
# 执行后可以看到在文件中出现了.git目录,关于版本的所有信息都在里面
# 在GitHub或者Gitee中克隆整个项目和它的版本信息
# 将远程服务器上的项目完全镜像至本地
$ git clone [url] https://.../文件名.git
将远程仓库中的项目克隆到本地:
vue create supermall
git clone [src]
git add .
git commit
git push
将已有的项目链接到远程仓库:
git remote add origin 仓库地址
git push -u orgin master
文件夹目录结构
h:Linux和Unix风格命令行(推荐)
Git CMD:Windows风格命令行
Git GUI:图形化界面
安装git之后首先要设置用户名称和e-mail地址。
所有的配置文件都在本地文件下C:\Users\个人用户\.gitconfig
git config
# Git用户配置信息
git config --global user.name "TuHongtao"
git config --global user.email 1410048525@qq.com
# 查看系统配置
git config --system --list
# 查看当前用户配置
git config --global --list
Git分为本地三个工作区域和一个Git远程仓库
Git文件在区域之间的转换命令
git add
——>暂存区commit
——>资源库git push
——>远程仓库git pull
——>资源库git reset
——>暂存区git checkout
——>工作目录# 在当前目录新建一个Git代码库并git初始化
$ git init
# 需要在文件中打开隐藏项目
# 执行后可以看到在文件中出现了.git目录,关于版本的所有信息都在里面
# 在GitHub或者Gitee中克隆整个项目和它的版本信息
# 将远程服务器上的项目完全镜像至本地
$ git clone [url] https://.../文件名.git
将远程仓库中的项目克隆到本地:
vue create supermall
git clone [src]
git add .
git commit
git push
将已有的项目链接到远程仓库:
git remote add origin 仓库地址
git push -u orgin master
文件夹目录结构
环境配置:路径配置(配置完需要重新npm run dev/serve
)