web前端

html

超文本标记语言 文字信息,图片,音频,视频等文件

html标签是预定义好的

<html>
    <head>
        <title>html快速入门</title>
    </head>
    <body>
        <h1>hello html</h1>
        <img src="1.jpg"/>
    </body>
</html>

标签

图片标签  src 指定图像的url   ,widget 图像宽度  height 图像高度  px 像素, %相对于父元素的百分比

相对路径 ./当前目录  可省略  ../上一级目录

标题标签  <h1>-<h6>

水平线标签<hr>

特点:

不区分大小写

属性值单双引号都行

语法松散

span标签:无语意  一行可显示多个行内组合元素,高度宽度默认有内容撑开

/* 元素选择器 */
        span{
            color: #4d4f53;
        }
        /* 类选择器 */
        .cls{
            color: #4d4f53;
        }
        /* id选择器 */
        #time{
            color: #4d4f53;
            font-size: 16px;
        }

优先级  id》类选择器>元素选择器

超链接 <a> 

href:指定资源访问的url   

target:指定在何处打开资源链接

_self:默认值在当前页面打开

_blank:在空白页面打开

<video>:  src规定视频的url  controls显示播放的控件  width宽度

audio  :  src:音频的url  controls: 播放控件 

p 段落    b/strong  文本加粗

div 独占一行   宽度父元素宽度 widget    height内容撑开

span 一行可显示多个  宽度高度由内容撑开  无法设置widget和 heiget

table  定义表格整体 可包裹多个<tr> 

border  表格边框的宽度  width 表格的宽度  cellspacing:单元之间的空间

<tr>表格的行 可包裹多个<td>

<td>单元格  表头的话可换为<th>

表单<form>

<input>定义表单项 type控制输入形式

<select>定义下拉列表

<textarea>定义文本域

action 提交表单向何处发送表单数据,url

method 规定用于发送表单数据的方式

get表单数据拼接在url后面 ?usernem=j,大小无限制

post表单数据在请求体中携带,大小无限制

css

层叠样式表,控制页面的样式(表现)

引入方式

行内样式:写在标签style属性中

<!-- 行内样式 -->
    <!-- <h1 style="color: red;">焦点访谈:中国底气 新思想夯实大国粮仓</h1> -->

内嵌样式:style标签中 (常写在head标签中)

<!-- 内嵌样式 -->
    <!-- <style>
        h1{
            /* color: red; */
            /* color: rgb(0,0,255); */
            /* color: #00f; */
        }
    </style> -->

外联样式:写在一个单独.css文件中(需通过link标签在网页中引入)

 <!-- 外联样式 -->
     <link rel="stylesheet" href="css/news.css">

text-decoration规定添加到文本的修饰,none表示定义标准的文本

line-height  行高

text-indent:内容缩进

text-align 文本水平对齐方式

border  边框属性:1px solid #000;

padding 内边距  margin 外边距  padding-top

js

javascript 跨平台,面向对象的脚本语言,控制网页行为,可交互

引入方式:

内部脚本:js代码定义在html中,必须位于<script>标签之间  一般至于<body>元素底部,改善显示速度

外部脚本:

外部js文件中,只包含js代码,不包含<script>标签 

<script>标签不能自闭合

js基础语法

书写语法 

与java一样,变量名,函数名以及一切都区分大小写

结尾分号可有可无

//单行注释  /* */多行注释   大括号表示代码块

<script>
    // 弹出警告框
    window.alert('hello js');
    // 写入html页面中
    document.write('hello js');
    // 控制台输出
    console.log('hello js');
</script>

变量

var  关键字声明   可存放不同类型的值 var a=20; a='';  

        数字不能开头  特点:全局变量  可重复定义

let 局部变量 ,不能重复定义;

const :常量,不能改变

数据类型

number 数字(整数,小数,nan(not a number))

string 字符串,单双引都可以

boolean  null 对象为空  undefined未初始化  typeof

运算符

==会进行类型转换  ===不会进行类型转换

将字符串转为数字:parseint

遇不到数字,则为nan

转boolean: 0,nan,空字符串,null,undefined为false其余为true

函数

(方法)被设计为执行特定任务的代码块

function functionName(参数1,参数2){}  或者 var functionName=function(参数1,参数2){}

形参不需要类型,返回值不需要定义类型,可在函数内部返回return

调用:函数名(实际参数)

对象

array数组

定义 var 变量名=new array(元素列表);  var 变量名=[元素列表];

访问:arr[索引]=值;

属性:length 设置或返回数组中元素的数量

方法: forEach() 遍历数组中的每个有值的元素,并调用一次传入的函数

// forEach遍历数组中有值的元素
    var arr=[1,2,3,4];
    arr.forEach(function(e){
        console.log(e);
    })
    // ES6箭头函数:(...)=>(...) 简化函数定义
    arr.forEach((e)=>{console.log(e);})

push() 将新元素添加到数组的末尾,并返回新的长度

splice() 从数组中删除元素

string

var 变量名=new String("...");  或者var 变量名="...";

length 长度

方法: charAt() 返回指定位置的字符

indexOf() 检索字符串

trim() 去除字符串两边的空格

substring(开始索引,end)提取字符串指定索引之间的字符 含头不含尾

java

自定义对象  格式

var 对象名={

属性名1:属性值1;

属性名2:属性值2;

函数名称:function(形参列表){}  简化:函数名称(形参列表){}

};

调用格式:对象名.属性名;  对象名.函数名;

json 文本 数据载体

定义 var 变量名='{"key1":value1,...[数组],{对象}}';

json字符串转为js对象  var jsobject=JSON.parse(变量名);

js对象转换为JSON字符串  var jsonStr=JSON.stringify(jsobject);

BOM

浏览器对象模型

window 

浏览器窗口对象  获取 window.alert(""); window.可省略

属性:history :history只读引用  location:用于窗口或框架的location对象

navigator: navigator只读引用

方法:

alert() 显示待有一段消息和一个确认按钮的警告框

confirm():显示待有一段消息以及确认按钮和取消按钮的对话框  确认返回true 取消false

setInterval():按照指定的周期(以毫秒)来调用函数或计算表达式

setTimeout():在指定的毫秒数后调用函数或计算表达式

// 获取
    window.alert("hello");
    alert("hello");
    // 方法
    // confirm -对话框 --确认:true 取消:false
    var i=0;
    setInterval(function(){
        i++;
        console.log("定时器执行了"+i+"次");
    },2000);
    // 定时器 -setTimeout ==延迟指定时间执行一次
    setTimeout(function(){
        alert("js");
    },3000);
Location

地址栏对象  获取: window.location.属性;  window.可省略

属性:href:设置或返回完整的url  location.href="https://"; 自动跳转

DOM

core dom

文档对象模型  document文档对象  element 元素对象 :html head a h1

text文本对象 教育   comment:注释对象  attrbute 属性对象 href

html 中的 element对象可通过document对象获取,而document对象通过window对象获取

document对象提供以下获取element元素对象的函数:

1根据id属性值获取,返回单个element对象:

var h1=document.getElementById('h1');

2根据标签名获取,返回element对象数组:

var divs=document.getElementsByTagName('div');

3根据那么属性值获取,返回element对象数组:

var hobbys=document.get.ElementByName('hobby');

4根据class属性值获取,返回element对象数组

var clss=document.getElements,ByClassName('cls');

查手册,属性方法  w3school.com.cn

var divs=document.getElementsByClassName('cls');  获取

var div1=divs[0];  第一个数组的值

div1.innerHTML='1123'; 修改页面内容

var divs=document.getElementsByTagName('div');
    for (let i = 0; i < divs.length; i++) {
        const div = divs[i];
        div.innerHTML+="<font color='red'>verygood</font>";
    }

事件

html事件是发生在html元素上的“事情”:按钮被点击 鼠标移动到元素上  按下键盘按键

事件监听 js可以在事件被侦测到时执行代码

事件绑定

通过html标签中的事件属性进行绑定

<input type="button" onclick="on()" value="按钮1">
<script>
   function on(){
    alert('点击了');
   }
</script>

通过dom元素属性绑定

<input type="button" id="btn" value="按钮2">
<script>
   document.getElementById('btn').onclick=function(){
    alert('我被点击了');
   }
</script>

vscode

插件

chinese language pack ,code spell checker,html css support ,javascript code snippets,mithril Emmett, pathintellisence, vue3 snippets, vuehelper,auto close tag, auto rename tag, beautify, bracket pair colorizer, open in browser, vetur, intellij idea keybingings

! 回车创建文件

vue

概述

前端js框架 基于MVVM 双向绑定 官网 https://v2.cn.vuejs.org/https://v2.cn.vuejs.org/

下载vue.js并导入

快速入门

新建html页面,引入vue.js文件

<script src="js/vue.js"></script>

在js代码区域,创建vue核心对象,定义数据模型

<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
            message:"hello vue"
        }
    })
</script>

编写视图

<div id="app">
        <input type="text" v-model="message">
        {{message}}
    </div>

常用指令

v-bind

为html标签绑定属性值,设置href,css等样式

<div id="app">
        <a :href="URL">链接一</a>
        <a v-bind:href="URL">链接二</a>
  </div>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
            URL:"https://www.baidu.com"
        }
    })
</script>

v-model

在表单元素上创建双向数据绑定

<div id="app">
        <a :href="URL">链接一</a>
        <a v-bind:href="URL">链接二</a>
        <input type="text" v-model="URL"> //可修改URL的值
    </div>
</body>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
            URL:"https://www.baidu.com"
        }
    })
</script>

v-on

为html标签绑定事件

<div id="app">
        <input type="button" value="点击了" v-on:click="handle()">
        <input type="button" value="点击了" @click="handle()">
 </div>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
        
        },
        methods: {
            handle:function(){
                alert("点击了");
            }
        }
    })
</script>

v-if v-else-if v-else

条件性的渲染某元素,判定为true时渲染,否则不渲染

<body>
    <div id="app">
        年龄<input type="text" v-model="age">经判断,为:
        <span v-if="age<=35">年轻人(35及以下)</span>
        <span v-else-if="age>35 && age<60">中年人(35-60)</span>
        <span v-else>老年人(60及以上)</span>
    </div>
</body>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
            age:20
        },
        methods: {
            
        }
    })
</script>

v-show

根据条件展示某元素,区别在于切换的是display属性的值

与v-if同理f12中可以看到但不展示

v-for

列表渲染,遍历容器的元素或者对象的属性

<body>
    <div id="app">
        <div v-for="addr in addrs"> {{addr}} </div>
        <hr>
        <div v-for="(addr,index) in addrs">{{index+1}}:{{addr}}</div>
    </div>
</body>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{
            addrs:["北京","上海","西安"]
        },
        methods: {

        }
    })
</script>

vue生命周期

<body>
    <div id="app">
        
    </div>
</body>
<script>
    // 定义vue对象
    new Vue({
        el:"#app",//vue接管区域
        data:{

        },
        methods: {

        },
        mounted () {
            alert("vue挂载完毕,发送请求获取数据");
        }
    })

ajax

异步的javascript和XML

作用:数据交换: ajax可以给服务器发送请求,并获取服务器响应的数据  

                异步交互:不重新加载整个页面的情况下,更新部分网页  ,如搜索联想,用户名的校验

原生ajax

<body>
        <input type="button" value="获取数据" onclick="getData()">
        <div id="div1"></div>
</body>
<script>
   function getData(){
    // 1创建XMLHttpRequest
    var xmlHttpRequest=new XMLHttpRequest();
    // 2发送异步请求
    xmlHttpRequest.open('GET','www.baidu.com');
    xmlHttpRequest.send;//发送请求
    // 3获取服务响应数据
    xmlHttpRequest.onreadystatechange=function(){
        if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status== 200){
            document.getElementById('div').innerHTML=xmlHttpRequest.responseText;
        }
    }
   }
</script>

axios

对原生ajax进行了封装,简化书写,快速开发  https://www.axios-http.cn/https://www.axios-http.cn/

入门

    <script src="js/axios.js" type="model"></script>
    <script src="js/axios.min.js" type="model"></script> //这两个引入部分可能不对
</head>
<body>
        <input type="button" value="获取数据get" onclick="get()">
        <input type="button" value="删除数据post" onclick="post()">
</body>
<script>
   function get(){
    //通过axios发送异步请求-get
    axios({
        method:"get",
        URL:"http://localhost:8080/Ajax_S1_war/ajax01"
    }).then(result=>{
        console.log(result.data);
    })
    axios.get("http://localhost:8080/Ajax_S1_war/ajax01").then(result=>{
        console.log(result.data);
    })
   }
   
   function post(){
    //通过axios发送异步请求-get
    axios({
        method:"post",
        URL:"https://www.baidu.com",
        data:"id=1"
    }).then(result=>{
        console.log(result.data);
    })
    axios.post("https://www.baidu.com","id=1").then(result=>{
        console.log(result.data);
    })
   }
</script>

前后端分离开发

介绍

前后端混合开发

前后端分离开发

YAPI(下次再补充)

api管理平台,提供接口管理服务 http://yapi.pro

使用:添加项目,添加分类,添加接口

高级mock设置初始值   编辑接口

前端工程化

环境准备

安装nodejs 验证 在cmd中node -v  配置npm全局安装路径npm config set prefix "E:\node.js"(安装路径nodejs)

切换npm的淘宝镜像  npm config set registry https://registry.npmmirror.com

安装vue-cli    npm install -g @vue/cli  检测版本vue --version

vue项目

创建

命令行 vue create vue-project01

 图形化界面  vue ui

创建项目 , 包管理器 npm, 手动 ,router路由, 语法规范formatter config 第一个eslint with error...

vscode中打开

目录结构

启动

进入到项目目录下才可

vscode中npm脚本,第一个serve vue-cli-service s..后的小三角

或者命令行npm run serve

vue配置端口

ctrl +c 终止项目

vue项目开发

vue组件库Element

基于vue的组件库  组件:组成网页的部件,如超i链接,按钮,图片,表单,分页条等

https://element.eleme.cn/#/zh-CN

快速入门

安装ElementUI组件库(在当前工程的目录下),命令行中执行

npm install element-ui@2.15.3

引入ElementUI组件库

src中的main.js中引入

//引入elementui组件
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

访问官网复制组件代码调整

app.vue

<template>
  <div>
    <!-- <h1> {{ message }} </h1> -->
     <!-- element组件 -->
    <element-View></element-View>  
  </div>
</template>
<script>
/* 导入路径 */
import ElementView from './views/element/ElementView.vue'
export default {
  components:{ElementView},
  data () {
    return {
      message:"hello vue"
    }
  },
  methods: {
    
  },
}
</script>
<style>

</style>

新建.vue页面element找模板

常见组件

表格

分页

dialog

 <!-- dialog对话框 -->
    <!-- Table -->
    <el-button type="text" @click="dialogTableVisible = true"
      >打开嵌套表格的 Dialog</el-button
    >
    <el-dialog title="收货地址" :visible.sync="dialogTableVisible">
      <el-table :data="gridData">
        <el-table-column
          property="date"
          label="日期"
          width="150"
        ></el-table-column>
        <el-table-column
          property="name"
          label="姓名"
          width="200"
        ></el-table-column>
        <el-table-column property="address" label="地址"></el-table-column>
      </el-table>
    </el-dialog>
<script>
export default {
  data() {
    return {
      gridData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
        },
      ],
         dialogTableVisible: false,
      
    };
  },
  methods: {

    };
</script>

form

案例  完成员工管理页面开发通过axios完成数据异步加载

创建页面,完成基本布局

vue用驼峰命名必须

app.vue中

<template>
  <div>
    <!-- 员工管理 与创建的.vue名字一致 -->
     <emp-view></emp-view>
  </div>
</template>
<script>
/* 导入路径 */
import EmpView from './views/tlias/EmpView.vue';
export default {
  components: {
    EmpView 
  },
  data() {
    return {
      message: "hello vue",
    };
  },
  methods: {},
};
</script>
<style>
</style>

element中的container中找

加入创建的.vue中

<template>
  <div>
    <el-container style="height: 700px; border: 1px solid #eee">
      <el-header style="font-size: 40px; background-color: rgb(238, 241, 246)"
        >tlias智能学习辅助系统</el-header
      >
      <el-container>
        <el-aside width="200px">
          <el-menu :default-openeds="['1', '3']">
            <el-submenu index="1">
              <template slot="title"
                ><i class="el-icon-message"></i>系统信息管理</template
              >
              <el-menu-item index="1-1">部门管理</el-menu-item>
              <el-menu-item index="1-2">员工管理</el-menu-item>
            </el-submenu>
          </el-menu>
        </el-aside>
        <el-main>
          <el-table :data="tableData">
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column
              prop="image"
              label="图像"
              width="180"
            ></el-table-column>
            <el-table-column prop="address" label="地址"> </el-table-column>
            <el-table-column label="操作">
              <el-button type-="primary" size="mini">编辑</el-button>
              <el-button type="danger" size="mini">删除</el-button>
            </el-table-column>
          </el-table>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [],
    };
  },
};
</script>
<style>
</style>

布局中各个部分的组件实现

<template>
  <div>
    <el-container style="height: 700px; border: 1px solid #eee">
      <el-header style="font-size: 40px; background-color: rgb(238, 241, 246)"
        >tlias智能学习辅助系统</el-header
      >
      <el-container>
        <el-aside width="200px">
          <el-menu :default-openeds="['1', '3']">
            <el-submenu index="1">
              <template slot="title"
                ><i class="el-icon-message"></i>系统信息管理</template
              >
              <el-menu-item index="1-1">部门管理</el-menu-item>
              <el-menu-item index="1-2">员工管理</el-menu-item>
            </el-submenu>
          </el-menu>
        </el-aside>
        <el-main>
          <!-- 表单 -->
          <el-form :inline="true" :model="searchForm" class="demo-form-inline">
            <el-form-item label="姓名">
              <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
            </el-form-item>
            <el-form-item label="性别">
              <el-select v-model="searchForm.gender" placeholder="性别">
                <el-option label="男" value="1"></el-option>
                <el-option label="女" value="2"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="入职时间">
              <el-date-picker
                v-model="searchForm.date"
                type="daterange"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              >
              </el-date-picker>
            </el-form-item>

            <el-form-item>
              <el-button type="primary" @click="onSubmit">查询</el-button>
            </el-form-item>
          </el-form>
          <!-- 表格 -->
          <el-table :data="tableData" border>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column
              prop="image"
              label="图像"
              width="180"
            ></el-table-column>
            <el-table-column prop="address" label="地址"> </el-table-column>
            <el-table-column label="操作">
              <el-button type-="primary" size="mini">编辑</el-button>
              <el-button type="danger" size="mini">删除</el-button>
            </el-table-column>
          </el-table>
          <br>
          <!-- 分页条 -->
          <el-pagination
            background
            layout="sizes,prev, pager, next,jumper,total"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :total="1000"
          >
          </el-pagination>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [],
      searchForm: {
        name: "",
        gender: "",
        date: [],
      },
    };
  },
  methods: {
    onSubmit: function () {
      alert("查询数据");
    },
    handleSizeChange: function (val) {
      alert("每页记录数变化" + val);
    },
    handleCurrentChange: function (val) {
      alert("页码发生变化" + val);
    },
  },
};
</script>
<style>
</style>

列表数据的异步加载,并渲染展示

vue中使用axios: 项目目录下安装axios: npm install axios;

使用axios,script中导入axios: import axios from 'axios';

<template>
  <div>
    <el-container style="height: 700px; border: 1px solid #eee">
      <el-header style="font-size: 40px; background-color: rgb(238, 241, 246)"
        >tlias智能学习辅助系统</el-header
      >
      <el-container>
        <el-aside width="200px">
          <el-menu :default-openeds="['1', '3']">
            <el-submenu index="1">
              <template slot="title"
                ><i class="el-icon-message"></i>系统信息管理</template
              >
              <el-menu-item index="1-1">部门管理</el-menu-item>
              <el-menu-item index="1-2">员工管理</el-menu-item>
            </el-submenu>
          </el-menu>
        </el-aside>
        <el-main>
          <!-- 表单 -->
          <el-form :inline="true" :model="searchForm" class="demo-form-inline">
            <el-form-item label="姓名">
              <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
            </el-form-item>
            <el-form-item label="性别">
              <el-select v-model="searchForm.gender" placeholder="性别">
                <el-option label="男" value="1"></el-option>
                <el-option label="女" value="2"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="入职时间">
              <el-date-picker
                v-model="searchForm.date"
                type="daterange"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              >
              </el-date-picker>
            </el-form-item>

            <el-form-item>
              <el-button type="primary" @click="onSubmit">查询</el-button>
            </el-form-item>
          </el-form>
          <!-- 表格 -->
          <el-table :data="tableData" border>
            <el-table-column prop="name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="date" label="日期" width="180">
            </el-table-column>
            <el-table-column label="图像" width="180">
              <template slot-scope="scope">
                <img :src="scope.row.image" width="100px" height="70px"/>
              </template>
            </el-table-column>
            <el-table-column label="性别" width="140">
              <template slot-scope="scope">
                <span style="margin-left: 10px">{{
                  scope.row.gender == 1 ? "男" : "女"
                }}</span>
              </template>
            </el-table-column>
            <el-table-column label="操作">
              <el-button type-="primary" size="mini">编辑</el-button>
              <el-button type="danger" size="mini">删除</el-button>
            </el-table-column>
          </el-table>
          <br />
          <!-- 分页条 -->
          <el-pagination
            background
            layout="sizes,prev, pager, next,jumper,total"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :total="1000"
          >
          </el-pagination>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>
<script>
import axios from "axios";
export default {
  data() {
    return {
      tableData: [],
      searchForm: {
        name: "",
        gender: "",
        date: [],
      },
    };
  },
  methods: {
    onSubmit: function () {
      alert("查询数据");
    },
    handleSizeChange: function (val) {
      alert("每页记录数变化" + val);
    },
    handleCurrentChange: function (val) {
      alert("页码发生变化" + val);
    },
  },
  mounted() {
    //发送异步请求,获取数据
    axios.get("/https://yapi.pro/mock/446453/usermanage").then((result) => {
      this.tableData = result.data.data;
    });
  },
};
</script>
<style>
</style>

vue路由

url中的hash(#号)与组件之间的对应关系

安装

npm install vue-router@3.5.1

定义路由

router  index.js设置路径

const routes = [
  {
    path: '/emp',
    name: 'emp',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import('../views/tlias/EmpView.vue')
  }
]

main.js导入router

import router from './router'

项目.vue中加链接

<router-link to="/emp">员工管理</router-link>

app.vue中加如图来动态展示

<template>
  <div>
      <router-view></router-view>
  </div>
</template>

最后访问/时,改为访问/emp  index.js中

const routes = [
  {
    path: '/',
    redirect: "/emp"
  }
]

打包部署

打包

部署nginx   

https://nginx.org/

serve  listen 改为90

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值