首页 > 其他分享 >从 0 搭建一个 vue3 项目

从 0 搭建一个 vue3 项目

时间:2022-11-03 20:24:13浏览次数:40  
标签:npm vue 项目 loader webpack html vue3 css 搭建

一、先实现一个简易版本

  1. 初始化 npm

    npm init -y // -y 能省去填写信息的步骤,一步到位
  2. 安装几个必要的依赖

    1 npm install css-loader style-loader -D // 解析css
    2 npm install vue@next // 修饰符默认 -S
    3 npm install vue-loader @vue/compiler/sfc -D // 解析 vue
    4 npm install webpack webpack-cli -D // 用这个打包 
  3.  创建必要的文件,并配置webpack

    1. 创建 dist > index.html

       1 <!DOCTYPE html>
       2 <html lang="en">
       3     <head>
       4         <meta charset="UTF-8" />
       5         <meta http-equiv="X-UA-Compatible" content="IE=edge" />
       6         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
       7         <title>从 0 构建 vue3.0 项目</title>
       8     <body>
       9         <div id="app"></div>
      10         <script src="main.js"></script></head>
      11     </body>
      12 </html>
    2. 创建 src > App.vue

       1 <template>
       2     <div class="main">
       3         <h1>Hello Nyan Cat</h1>
       4     </div>
       5 </template>
       6 
       7 <style>
       8     h1 {
       9         color: red;
      10     }
      11 </style>
    3. 创建 src > main.js

      1 import { createApp } from "vue";
      2 import App from "./App.vue";
      3 
      4 const app = createApp(App);
      5 app.mount("#app");
    4. 配置webpack

       1 const path = require("path");
       2 // 封装一下,后面会频繁用到
       3 function resolve(folder) {
       4     // path.resolve 和 path.join 的结果一样
       5     return path.resolve(__dirname, folder);
       6 }
       7 // 分离 html、css、js,然后交给loader去处理
       8 const { VueLoaderPlugin } = require("vue-loader");
       9 
      10 module.exports = {
      11     entry: "./src/main.js", // 设置打包的入口
      12     // 设置打包的出口
      13     output: {
      14         filename: "main.js",
      15         path: resolve("dist"),
      16     },
      17     resolve: {
      18         // 配置下简写
      19         alias: {
      20             "~": resolve("src"), // 我喜欢用 ~
      21             assets: resolve("src/assets"), // 这里不能使用 "~/assets"
      22         },
      23         // 配置下省略
      24         extensions: ["vue", ".js", ".ts"],
      25     },
      26     //添加模块
      27     module: {
      28         rules: [
      29             {
      30                 // 设置.vue文件的解析规则
      31                 test: /\.vue$/,
      32                 loader: "vue-loader",
      33             },
      34             {
      35                 // 设置.css的解析规则
      36                 test: /\.css$/,
      37                 use: [{ loader: "style-loader" }, { loader: "css-loader" }],
      38             },
      39             {
      40                 // 设置 .less的解析规则
      41                 test: /\.less$/,
      42                 use: [
      43                     { loader: "style-loader" },
      44                     { loader: "css-loader" },
      45                     { loader: "less-loader" },
      46                 ],
      47             },
      48             {
      49                 test: /\.(png|jpe?g|gif)$/,
      50                 use: [
      51                     {
      52                         loader: "file-loader",
      53                         options: {
      54                             name: "[name].[ext]",
      55                             outputPath: "images/",
      56                         },
      57                     },
      58                 ],
      59             },
      60         ],
      61     },
      62     // webpack 会把多个 js 文件打包成一个文件,最终的效果就是这个文件对人类基本不可读;如果程序在运行的过程中报错了,基本不可能找到是哪个源文件的问题,inline-source-map 就可以显示的为我们指示出代码来自哪个文件
      63     devtool: "inline-source-map",
      64     plugins: [new VueLoaderPlugin()],
      65 };
    5. 配置 package.json,给 scripts 添加一个 build 命令就好了
      "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1",
          "build": "webpack" // 打包
      },
    6. 尝试跑起来,运行 npm run build ,此时会在 dist 文件夹下多出一个 main.js,双击打开 index.html,出现 Hello Nyan Cat 就说明 vue3 项目搭建起来了,接下来我们把它弄的复杂一点

二、尝试不断增加功能 ^o^

  1. 安装一些常用的依赖

    1 npm install less less-loader -D // 可以很方便地开发 css
    2 npm install file-loader -D // 可以把小图片解析成 base64,从而减少 http 请求
    3 npm install webpack-dev-server -D // 让项目运行在本地地服务器,并提供热更新
    4 npm install html-webpack-plugin -D // 这个插件允许我们在 index.html 使用变量,可以很方便地修改信息
  2. 为 App.vue 添加一张图片,并且使用 less

     1 <template>
     2     <div class="main">
     3         <h1>Hello Nyan Cat</h1>
     4         <img :src="require('assets/NyanCat.jpg').default" alt="Nyan Cat" />
     5     </div>
     6 </template>
     7 
     8 <style lang="less">
     9     .main {
    10         display: flex;
    11         flex-direction: column;
    12         align-items: center;
    13         h1 {
    14             color: red;
    15         }
    16     }
    17 </style>
  3. 修改下 webpack,这里只有部分代码,自行对比

    1. 关于 html-webpack-plugin,由于有了这个插件,所以把 dist > index.html 移动到 public > index.html,然后在 output 属性下添加 clean: true,表示每次打包前都清空 dist

      1 // 分离 html、css、js,然后交给loader去处理
      2 const { VueLoaderPlugin } = require("vue-loader");
      3 
      4 const HtmlWebpackPlugin = require("html-webpack-plugin");
      1 plugins: [
      2     new VueLoaderPlugin(),
      3     new HtmlWebpackPlugin({
      4         filename: "index.html", // 配置输出后的html文件名,前面也可以添加目录
      5         template: "./public/index.html", // 配置模板
      6     }),
      7 ],
    2. 关于解析规则,增加 less 解析和图片解析,注意 less 解析和 css 解析要分开写,loader 的顺序不能错了

       1 {
       2     // 设置.css的解析规则
       3     test: /\.css$/,
       4     use: [{ loader: "style-loader" }, { loader: "css-loader" }],
       5 },
       6 {
       7     // 设置 .less的解析规则
       8     test: /\.less$/,
       9     use: [
      10         { loader: "style-loader" },
      11         { loader: "css-loader" },
      12         { loader: "less-loader" },
      13     ],
      14 },
      15 {
      16     test: /\.(png|jpe?g|gif)$/,
      17     use: [
      18         {
      19             loader: "file-loader",
      20             options: {
      21                 name: "[name].[ext]",
      22                 outputPath: "images/",
      23             },
      24         },
      25     ],
      26 },
    3. 关于服务器

       1 plugins: [
       2     new VueLoaderPlugin(),
       3     new HtmlWebpackPlugin({
       4         filename: "index.html", // 配置输出后的html文件名,前面也可以添加目录
       5         template: "./public/index.html", // 配置模板
       6     }),
       7 ],
       8 devServer: {
       9     port: 1024,
      10     open: true,
      11 },
  4. 然后尝试运行在服务器 npm run dev ,就像下面这样,我偷偷改了下颜色哈哈,不过我认为你有一件更重要的事情,就是在 package.json 的 scripts 下面添加一条新的命令 "dev": "webpack serve --mode production",然后继续 npm run dev 

三、最后一步是使用 ts,奈何我才刚学会语法,后面再更新吧

标签:npm,vue,项目,loader,webpack,html,vue3,css,搭建
From: https://www.cnblogs.com/aurora-power/p/16852111.html

相关文章

  • 登录注册接口搭建
    登录接口分析登录分为多方式登录和验证码登录方式多方式登录1)前台提供账号密码,账号可能是用户名、手机号、邮箱等接口:后台只需要提供一个多方式登录接口即可-多方......
  • linux下搭建oh-my-zsh环境
    目标:因为用习惯了zsh的shell环境,所以习惯在服务器上也搭建zsh环境,但是每次搭建都需要Google每一步骤,感觉很麻烦,所以决定记录一下,免得一次次查1.安装zshzsh是一款shell环......
  • 用Docker搭建Python环境
    步骤1创建项目目录$cd/PATH/TO$mkdirpython-demo2下载python镜像1#下载镜像2dockerpullpython:3.834#查看镜像5dockerimages3创建pytho......
  • 企业项目开发流程,路飞项目,虚拟环境搭建
    目录企业项目开发流程一、企业项目类型面向互联网用户:商城类项目面向互联网用户:二手交易类的公司内部项目:python写的重点个人博客内容收费网站房屋租赁二、完整流程三、我......
  • notepad++搭建gtk3.0/2.0环境_F_hawk189_新浪博客
    准备下载以下内容​​notepad++​​​​mingw​​(包含msys和gcc工具链)​​gtk+bundle​​(2.x或3.x都可以,不过现在官网都是使用msys下载)安装......
  • 【2022-11-03】luffy项目实战(一)
    一、企业项目类型#1面向互联网用户:商城类项目 -微信小程序商城#2面向互联网用户:二手交易类的-咸鱼-转转#3公司内部项目:python写的重点......
  • 使用docker搭建一个WordPress网站
     【整体说明】网站需要三个容器:WordPress、MariaDB、Nginx,他们的关系如下图。这是一个典型的网站,mariadb作为后方的关系型数据库,端口号是3306;wordpress是中间的应用服务......
  • luffy项目(一)
    今日内容概要企业项目类型企业项目开发流程路飞项目需求pip换源虚拟环境搭建luffy后台创建目录调整今日内容详细企业项目类型#1面向互联网用户:商城类项目......
  • luffy项目准备
    pip换源1.python中下载第三方模块:pip3installdjango-i源地址2.永久换源pip3installdjango#就会取配好的国内镜像下载2.1文件管理器文件路径地址栏敲:%A......
  • luffy项目之虚拟环境和项目目录调整
    一、企业项目类型#1面向互联网用户:商城类项目-微信小程序商城#2面向互联网用户:二手交易类的-咸鱼-转转#3公司内部项目:python写......