在webpack基础上使用vuejs基础功能

悬浮侠
• 阅读 992

前言(前置环境配置)

本文章基于的项目的目录结构以及初始化npm,初始化webpack环境等前置内容,请参考这篇文章:传送门

step 1 安装vue

运行npm i vue
先检查不使用.vue文件时项目运行情况,排除其它可能的干扰。
修改./src/index.html文件如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />

    <title>Document</title>
</head>

<body>
    <h1>Index</h1>
    <div id="app">
        {{msg}}
    </div>
</body>

</html>

修改入口文件entry.js如下

import './css/index.css'
import './js/index.js'

./js/index.js中增加相关配置

/**
 * import Vue from 'vue' 所默认导入的Vue组件其实是不全的,或者对于刚开始学习和练习的人来说是不全的
 * 所以这里实际上引用的是./node_modules/vue/dist/vue.js 其中./node_modules按语法可省略
 */
import Vue from 'vue/dist/vue.js'

var app = new Vue({
    el:'#app',
    data:{
        msg:'测试'
    }
})

使用npm run dev打开网站,能在页面上看到对应的文本“测试”,则说明至此为止项目一切配置正常。

step 2 安装解析.vue的loader

显然,Vue.js还没有像.css和图片资源,字体资源那样统一前端界与普及,所以我们应该首先考虑Vue官方是否提供了在Webpack下使用Vue的信息。因此,我们以 .vue site:vuejs.org 进行搜索
搜素结果中的第一个在阅览后便给出了我们想要的答案:传送门
切换到左侧目录中的 起步-手动设置 章节,按照官方文档进行操作。

安装:npm install -D vue-loader vue-template-compiler

按照官方文档引入配置,在我们的项目中完成配置后配置文件webpack.config.js应当如下:

const path = require("path"); //路径管理模块,使用它可以高效获取项目路径,避免路径错误.

//导入html-webpack-plugin以便之后配置
var htmlWebpackPlugin = require("html-webpack-plugin");

//为开启热部署引入webpack模块
const webpack = require("webpack");

//引入.vue支持
const VueLoaderPlugin = require('vue-loader/lib/plugin')

/**
 * 在这个对象中配置webpack的运行参数
 */
var config = {
  //指定集成引入资源的入口js文件
  entry: path.join(__dirname, "./src/entry.js"),
  //webpack处理后输出的文件的配置
  output: {
    path: path.join(__dirname, "./dist"), //指定输出的目录
    filename: "bundle.js" //输出的文件的文件名
  },
  module: {
    rules: [
      { test: /\.css$/, use: ["style-loader", "css-loader"] },
      { test: /\.(jpg|jpeg|png|gif)$/, use: "url-loader" },
      { test: /\.(woff|woff2|ttf|eot|svg)$/, use: "url-loader" },

      //为.vue添加解析
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      }
    ]
  },
  //配置webpack-dev-server的运行参数
  devServer: {
    open: true, //运行后自动打开浏览器
    port: 3000, //启动的服务器的监听端口
    //contentBase: path.join(__dirname, "./src"), //指定托管的网站文件的根目录
    hot: true //启用热更新
  },
  //用来引入webpack的插件
  plugins: [
    //引入html-webpack-plugin插件 这里的htmlWebpackPlugin是第四行require进来的
    new htmlWebpackPlugin({
      //指定要被插件处理的页面
      template: path.join(__dirname, "./src/index.html"),
      //指定页面处理后的名字
      filename: "index.html"
    }),
    new webpack.HotModuleReplacementPlugin(),

    //为Vue而引入
    new VueLoaderPlugin()
  ]
};

/**
 * 向外暴露配置webpack的对象
 */
module.exports = config;

至此我们已经按照官方文档完成了vue相关loader的配置,让我们来测试是否成功吧。

创建./src/login.app,我们假装这是一个登录组件,内容如下:

<template>
  <div>
    <p>登录组件</p>
  </div>
</template>

<script>
</script>

<style>
</style>

修改./src/js/index.js文件,修改后内容如下:

import Vue from "vue/dist/vue.js";

import login from "../login.vue";

var app = new Vue({
  el: "#app",
  data: {
    msg: "测试"
  },
  render: function(createEl) {
    return createEl(login);
  }
});

保存后再去查看网页,会发现原本的“测试”文本消失了,变成了“登录组件”,意味着Vue与Webpack结合成功。

step 3 安装vue-router

官方文档:传送门

我们希望创建如下一个简单网页来测试对vue-router的安装是否成功:在主页上有“登录”和“注册”两个按钮,点击登录展示登录组件,点击注册展示注册组件,在此过程中页面不跳转。

按照官方文档,先安装vue-router模块:npm i -S vue-router

创建VueTemplates文件夹,并在其下创建login.vue和register.vue,把它们假装是登录和注册组件。

./src/VueTemplates/login.vue
<!-- 注册组件基本相同,不再赘述 -->
<template>
  <div>
    <p>登录组件</p>
  </div>
</template>

<script>
export default {};
</script>

<style scoped>
</style>
./src/app.vue

<template>
  <div>
    <h1>App</h1>

    <router-link to="/login">登录</router-link>
    <router-link to="/register">注册</router-link>
    
    <router-view></router-view>
  </div>
</template>

<script>
//按照官方文档要求引入vue-router
import Vue from "vue/dist/vue.js";
import VueRouter from "vue-router";
Vue.use(VueRouter);

//引入我们自定义的组件
import loginT from "./VueTemplates/login.vue";
import registerT from "./VueTemplates/register.vue";

//路由控制
var router = new VueRouter({
  routes: [
    { path: "/login", component: loginT },
    { path: "/register", component: registerT }
  ]
});


export default {
    // 为app这个template模板设置路由控制
    router
};
</script>

<style scoped>
</style>

修改./src/index.js,引入app模板并将其渲染到页面上。

import Vue from 'vue/dist/vue.js'

//引入app.vue模板
import appT from '../app.vue'

var app = new Vue({
    el:'#app',
    data: {
        msg:'Vue引入测试'
    },
    //将app渲染到页面上
    render: (createEl) => {return createEl(appT)}
})

npm run dev后应该能实现我们一开始预计想要的功能。至此说明vue-router模块引用成功。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
代码哈士奇 代码哈士奇
3年前
webpack5构建一个简单的vue项目 (练习)
webpack5构建vue必要环境安装ndejs我们需要安装node如果没有安装则安装安装过则跳过执行nodevnpmv初始化项目文件夹新建一个空的项目执行npminity初始化npminity会生成一个package.json安装webpack以及htmlwebpackplugin控制台执行npmiwebpackwebpackcliwebpackdevserverhtmlwebpackpluginD安装babelloaderbabel可以将我们的代码向下
Jacquelyn38 Jacquelyn38
4年前
React.js中JSX的原理与关键实现
在开始开发之前,我们需要创建一个空项目文件夹。安装1.初始化npm init y2.安装webpack相关依赖npm install webpack webpackcli D3.安装babelloader相关依赖npm install babelloader @babel/core @babel/presetenv D4.
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
可莉 可莉
3年前
18个常用 webpack插件,总会有适合你的!
!(https://oscimg.oschina.net/oscnet/71317da0c57a8e8cf5011c00e302a914609.jpg)来源| https://github.com/Michaellzg/myarticle/blob/master/webpack/Plugin何为插
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这