Web前端快速入门(Vue、Element、Nginx)

目录

前端工程化

Element

vue路由&打包部署


前端工程化

前后端分离开发:

早期的模式为:前后端混合开发,缺点:沟通成本高,分工不明确,不方便管理,不方便拓展

当前主流开发模式:前后端分离

接口文档:通过原型+需求分析得来

 接口文档的维护:在线、离线。

流程:需求分析->接口定义(API接口文档)->前后端并行开发->测试(前端、后端)->前后端联调测试

YApi:

介绍:YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务

地址:https:// yapi smart x-work.cn.

 API接口管理功能

Mock服务:可以生成真实接口,用于模拟的接口测试,实现前后端分离开发

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

前端开发工程化:

模块化(JS\css)、组件化(UI结构、样式、行为)、规范化(目录结构、编码、接口)、自动化(构建、部署、测试)

前端工程化:把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。

一、环境准备

介绍:Vue-cli是Vue官方提供的一个脚手架,用于快速生成一个Vue的项目模板。

Vue-cli功能:统一的目录结构、本地调试、热部署、单元测试、集成打包上线

依赖环境:NodeJS

NodeJS官网:Node.js — 在任何地方运行 JavaScript

1.安装NodeJS

2.配置npm全局路径

点击开始

输入cmd 、点击

使用管理员身份运行命令,在命令行中,执行如下指令:

npm config set prefix "D:\NodeJS" (该路径为你所选择的nodejs的安装目录)

验证是否设置成功执行:npm config get prefix

出现你设置的路径则设置成功

3.切换npm的淘宝镜像(用于加速资源下载)

使用管理员身份运行命令,在命令行中,执行如下指令:

npm config set registry https://registry.npm.taobao.org

4.安装vue-cli

使用管理员身份运行命令,在命令行中,执行如下指令:

npm install -g @vue/cli

执行完后会自动给你下载资源

验证是否成功下载执行:vue --version

出现版本号则下载成功

二、Vue项目简介

Vue项目-创建

方式一:命名行: vue create vue-project01

(create后为项目名称)

方式二:

图形化界面 :vue ui

(会调用出Vue的项目管理器)

创建方法:创建一个文件夹  -->  双击进入文件夹输入cmd,再输入vue ui调出图形化界面 -> 点击创建,输入名称,点击包管理器选择npm->不选择初始化地址仓库(后续需用到)--> 下一步选择预设模板为手动 -> 下一步选择插件的功能,额外选择Router(路由功能)--> 下一步,选择版本2.x --> 语法检测规范选择第一个即可->点击创建项目不预设

用方式二创建完项目后

在vs中打开

每个文件包的意义:

node_modules存放依赖包

public存放静态变量

src存放源代码

package.json 依赖的资源信息,和版本信息

vue.config.js 保存vue配置的文件,如:代理、端口的配置等

 vue端口配置

在vue.config.js中增加这几行代码

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer:{
    port:7000,
  }
})

 Vue项目开发流程

默认首页 index.html 引入了入口文件 main.js(引入了很多模块import)

 export导出,import导入,只有在导出定义完模块之后才能用import导出

 Vue的组件文件以.vue结尾,每个组件由三个部分组成:<template>、<script>、<style>。

<template>模板部分,由它生成HTML代码

<script>:控制模板部分的数据来源和行为 

<style>:css样式部分

 

 

Element

Element:一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面组件库。

组件:组成网页的部件,例如 超链接、按钮、图片、表格等

官网:Element - 网站快速成型工具https://element.eleme.cn/#/zh-CN

 快速入门:

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

npm install element-ui@2.15.3

二、引入ElementUI组件库

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

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

       在views下创建新页面

常见组件:

表格组件:

Table表格:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。

从官方文档中查询然后粘贴再修改

<template>
<div>
    <el-row>
  <el-button>默认按钮</el-button>
  <el-button type="primary">主要按钮</el-button>
  <el-button type="success">成功按钮</el-button>
  <el-button type="info">信息按钮</el-button>
  <el-button type="warning">警告按钮</el-button>
  <el-button type="danger">危险按钮</el-button>
</el-row>
    <el-table
    :data="tableData"
    border
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>

  </el-table>
</div>
</template>
<script>
export default{
 data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    }
}
</script>

<style>

</style>

分页组件:

Pagination分页:当分页数据量过多时,使用分页分解数据。

可通过改变组件的名字的位置改变组件在展示页面中的位置

  <el-pagination background layout="sizes,prev, pager, next,jumper,total"
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange" :total="1000">
</el-pagination>

 对话框组件:

Dialog对话框:在保留当前页面状态的情况下,告知用户并承载相应操作。(相当于一个弹窗,可以展示表格、表单、图片等)

<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>

 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,

表单组件:

From表单:由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据。

<template>中代码

<!-- Dialog 对话框 呈现From表单组件-->

<el-button type="text" @click="dialogFromVisible = true">打开From 的Dialog表单</el-button>

<el-dialog title="From表单" :visible.sync="dialogFromVisible">
  <el-form ref="form" :model="form" label-width="80px">
  <el-form-item label="活动名称">
    <el-input v-model="form.name"></el-input>
  </el-form-item>

  <el-form-item label="活动区域">
    <el-select v-model="form.region" placeholder="请选择活动区域">
      <el-option label="区域一" value="shanghai"></el-option>
      <el-option label="区域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>

  <el-form-item label="活动时间">
    <el-col :span="11">
      <el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%;"></el-date-picker>
    </el-col>
    <el-col class="line" :span="2">-</el-col>
    <el-col :span="11">
      <el-time-picker placeholder="选择时间" v-model="form.date2" style="width: 100%;"></el-time-picker>
    </el-col>
  </el-form-item>

  <el-form-item>
    <el-button type="primary" @click="onSubmit">提交</el-button>
    <el-button>取消</el-button>
  </el-form-item>
</el-form>

</el-dialog>

 <script>中代码

    form: {
          name: '',
          region: '',
          date1: '',
          date2: '',
        },
  dialogFromVisible:false,

 最终效果:

 案例:

<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-aside width="200px" style="background-color: rgb(238, 241, 246)">
            <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-aside>

        <el-main>
          <!-- From表单 -->
          <el-form :inline="true" :model="searchFrom" class="demo-form-inline">
            <el-form-item label="姓名">
              <el-input
                v-model="searchFrom.name"
                placeholder="审批人"
              ></el-input>
            </el-form-item>
            <el-form-item label="性别">
              <el-select v-model="searchFrom.gender" placeholder="活动区域">
                <el-option label="男" value="1"></el-option>
                <el-option label="女" value="2"></el-option>
              </el-select>
            </el-form-item>

            <el-from-item label="入职日期">
              <el-date-picker
                v-model="searchFrom.enrydate"
                type="daterange"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
              >
              </el-date-picker>
            </el-from-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="image"
              label="图像"
              width="180"
            ></el-table-column>
            <el-table-column
              prop="gender"
              label="性别"
              width="140"
            ></el-table-column>
            <el-table-column
              prop="job"
              label="职位"
              width="140"
            ></el-table-column>
            <el-table-column
              prop="entrydate"
              label="入职日期"
              width="180"
            ></el-table-column>
            <el-table-column
              prop="updatetime"
              label="最后操作时间"
              width="230"
            ></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-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: [],
      searchFrom: {
        name: "",
        gender: "",
        enrydate: [],
      },
    };
  },
  methods: {
    onsubmit: function () {
      alert("查询数据");
    },
    handleSizeChange: function (val) {
      alert("每页记录数发生变化" + val);
    },
    handleCurrentChange: function (val) {
      alert("访问的页码发生变化" + val);
    },
  },
  mounted() {
    axios
      .get("http://yapi.smart-xwork.cn/mock/169327/emp/list")
      .then((result) => {
        this.tableData = result.data.data;
      });
  },
};
</script>

<style></style>

Vue路由&打包部署

Vue路由:

前端路由:URL中的hash(#号)与组件之间的对应关系。

介绍:Vue Router 是 Vue的官方路由。

组成:

       VueRouter:路由器类,根据路由请求在路由视图中动态渲染选中的组件

      (维护了一份路由表,记录了url与组件的对应关系)

       <router-link>:请求连接组件,浏览器会解析成<a>

       <router-view>:动态视图组件,用来渲染展示与路由路径对应的组件

1.安装(创建Vue项目时已选择)

2.定义路由

在router 文件目录下的 index.js下来定义

 通过<router-link-to>发生事件时自动找到 link to 定义的组件

再通过<router-view></router-view>在相应的部分展示组件(在App.vue中动态展示)

 

需要配置根路径,否则再次打开浏览器则没有路径

打包部署:

打包:

执行脚本:

打包后的文件会被放到dist目录下

部署:

介绍:Nginx是一款轻量级的Web服务器/反向代理电子邮件服务器。特点:占用内存少,并发能力强

官网:nginx: download

部署:将打包好的dist目录下的文件,复制到nginx安装目录html目录下。

启动:双击nginx.exe

注意:Nginx默认占用80端口号,如果80端口号被占用,可以在nginx.conf中修改端口号。查看被谁占用:(netstat -ano| findStr 80)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值