11.20 vue项目搭建-单页面应用

**了解什么是SPA(单页面应用)

  • 单页Web应用(single page web application,SPA): SPA 是一种特殊的 Web 应用,是加载单个 HTML 页面并在用户与应用程序交互时动态更新该页面的。

  • 它将所有的活动局限于一个 Web 页面中,仅在该 Web 页面初始化时加载相应的 HTML 、 JavaScript 、 CSS

  • 一旦页面加载完成, SPA 不会因为用户的操作而进行页面的重新加载或跳转,而是利用 JavaScript 动态的变换 HTML(采用的是 div 切换显示和隐藏),从而实现UI与用户的交互。

  • 在 SPA 应用中,应用加载之后就不会再有整页刷新。相反,展示逻辑预先加载,并有赖于内容Region(区域)中的视图切换来展示内容。

了解什么是前端脚手架

  • 前端脚手架就是指通过选择几个选项快速搭建项目基础代码的工具。前端脚手架可以有效避免我们 ctrl + C 和 ctrl + V 相同的代码框架和基础配置。

  • 在实际开发过程中,我们经常都会用到脚手架来构建前端工程项目,常见的主流框架都有自己的脚手架,vue-cli、create-react-app、angular-cli。

  • 在大型公司都会有内部定制化的脚手架开发工具,使用脚手架可以大幅提升项目的构建速度,通过命令行的交互,选择你所需要的配置与集成,可快速完成初始项目的创建

了解vue的脚手架

Vue3

Plain 复制代码
vite:仅支持vue3;运行速度快;不是基于webpack打包

Vue2+Vue3

Plain 复制代码
脚手架 vue-cli
vue2、vue3都支持;运行速度较慢;基于webpack打包

了解vite和webpack的区别

Vite是新一代前端构建工具。Vite 的竞品是 Webpack,而且按照现在的趋势看,使用率超过 Webpack 也是早晚的事

vite的作者是尤雨溪

vite的特点

Vite 的快,主要体现在两个方面: 快速的冷启动和快速的热更新。而 Vite 之所以能有如此优秀的表现,完全归功于 Vite 借助了浏览器对 ESM 规范的支持,采取了与 Webpack 完全不同的打包机制。

  • 快速冷启动:

  • Vite只启动一台静态页面的服务器,不会打包全部项目文件代码,服务器根据客户端的请求加载不同的模块处理,实现按需加载,而我们所熟知的webpack则是,一开始就将整个项目都打包一遍,再开启dev-server,如果项目规模庞大,打包时间必然很长。

  • 打包编译速度:

  • 当需要打包到⽣产环境时,vite使⽤传统的rollup进⾏打包,所以,vite的优势是体现在开发阶段,另外,由于vite使⽤的是ES Module,所以代码中不可以使⽤CommonJs;

  • 热模块更新:

  • 在HRM热更新⽅⾯,当某个模块内容改变时,让浏览器去重新请求该模块即可,⽽不是像webpack重新将该模块的所有依赖重新编译;

vite和webpack的区别

  • vite是go语言编写的,而webpack是原生js编写的,性能不如go语言(go语言操作是纳秒级别,而js是毫秒级别)

  • vite利用了ES的modules,不需要打包,所以速度快

  • webpack先打包,再启动开发服务器,请求服务器时直接给予打包后的结果;vite直接启动开发服务器,请求哪个模块再对哪个模块进行实时编译

  • vite的主要优势就是快,缺点是相关生态还不完善

简单来说: webpack是先打包再启动开发服务器,vite是直接启动开发服务器,然后按需编译依赖文件。

了解相关概念

  • 冷启动

  • 在冷启动时,应用程序的进程会被系统创建,应用程序需要重新初始化所有的资源和数据

  • HMR

  • Hot Module Replacement的简写,意思是模块热替换,即允许在运行时更新各种模块,而无需进行完全刷新。HMR大大提高了开发阶段的更新的响应速度,避免全量更新,在提高效率的同时大大提高了开发体验

  • Rollup

  • Rollup是基于ES2015的JavaScript打包工具。它将小文件打包成一个大文件或者更复杂的库和应用,打包既可用于浏览器和Node.js使用。 Rollup最显著的地方就是能让打包文件体积很小。相比其他JavaScript打包工具,Rollup总能打出更小,更快的包。因为Rollup基于ES2015模块,比Webpack使用的CommonJS模块机制更高效

初始化vue项目

运行下方命令,选择合适的选项,会自动创建项目结构

注意:这里使用vite创建项目,nodejs必须是20.19+ or 22.12+以上的版本

JavaScript 复制代码
// 使用vite创建vue3的项目
npm create vite@latest
// 可以继续吗?Y
Ok to proceed?
// 输入项目名称
Project name
// 选择一个框架
Select a framework:vue
// 选择一个项目初始化的技术栈
Select a variant:JavaScript
// 是否使用实验性构建底层工具
Use rolldown-vite (Experimental)?:NO
// 是否现在安装包依赖并运行
Install with npm and start now:yes安装并运行,no后期需要使用npm i 安装
//进入项目目录
cd vite-project
// 开启开发服务器,运行项目
npm run dev
  • 真机测试配置

  • 通过局域网中的电脑或手机访问服务调试时,需修改package.json ,在"dev"中暴露Ip地址

JSON 复制代码
{
  "name": "vite-project",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite --host 192.168.10.67",
    "build": "vite build",
    "preview": "vite preview"
  }
}

vue单文件组件

Vue 的单文件组件 (即 *.vue 文件,简称 SFC) 是一种特殊的文件格式,使我们能够将一个 Vue 组件的模板、逻辑与样式封装在单个文件中

下面是一个单文件组件的示例

HTML 复制代码
<script>
export default {
  data() {
    return {
      greeting: 'Hello World!'
    }
  }
}
</script>
<template>
  <p class="greeting">{{ greeting }}</p>
</template>
<style>
.greeting {
  color: red;
  font-weight: bold;
}
</style>

如你所见,Vue 的单文件组件是 HTML、CSS 和 JavaScript 三种元素的自然延伸。<template><script><style> 三个块在同一个文件中封装、组合了组件的视图、逻辑和样式。

安装vscode的插件volar

volar功能: 语法高亮、错误与警告、代码补全等

快速生成vue3代码

vscode>文件> 首选项 > 配置用户代码片段 > vue.json > 把下面文字粘入

JSON 复制代码
{
  "Print to console": {
    "prefix": "v3",
    "body": [
    "<script>",
    "    export default {",
    "        data(){",
    "            return {",
    "",
    "            }",
    "        }",
    "    }",
    "",
    "</script>",
    "",
    "<template>",
    "   <div class=\"$1\">",
    "",
    "   </div>",
    "</template>",

    "<style lang=\"scss\" scoped>",
    "",
    "</style>",
    ],
    "description": "Log output to console"
  }
}

**安装sass

CSS 预编译语言,也称为 CSS 扩展语言,是在 CSS 的基础上拓展的一套语言。它需要经过编译处理后才能变成浏览器可识别的 CSS 代码

常用的 CSS 预编译语言有: Sass Less Stylus

Sass 是最流行的 CSS 预编译语言

JavaScript 复制代码
// 安装sass
npm i sass

真机测试

如果做的是移动端项目,就需要进行真机测试

通过局域网中的电脑或手机访问服务调试时,需修改package.json ,在"dev"中暴露Ip地址

第一步:先查询自己的ip地址

Window:ipconfg

我们要ipv4的地址就可以

Mac:curl ifconfig.me

第二步:在dev中配置

![[1280X1280 (41).PNG]]

其实项目运行成功的时候也提示过网络访问的配置

network:网络访问

需要使用 use --host to expose

expose:暴漏出来

![[a1693426-981f-4fed-88e0-45de8224b2e9.png]]

第三步:重新启动

npm run dev

这个命令不一定,如果后期你用的是vue-cli那么就需要用其他命令进行启动了

![[d3c15e8c-f73b-449c-8c7e-098bdefdfd0b.png]]

这时候生成的命令就变成对应的ip地址,这时候直接使用手机也能访问

相关推荐
T***160744 分钟前
JavaScript打包
开发语言·javascript·ecmascript
BUG创建者1 小时前
项目中使用script-ext-html-webpack-plugin
前端·webpack·html
极光代码工作室1 小时前
基于SpringBoot的校园招聘信息管理系统的设计与实现
java·前端·spring
打小就很皮...1 小时前
React VideoPlay 组件封装与使用指南
前端·react.js·video
Ace_31750887761 小时前
微店平台关键字搜索接口深度解析:从 Token 动态生成到多维度数据挖掘
java·前端·javascript
Billow_lamb1 小时前
React 创建 Context
javascript·react.js·ecmascript
苏小画1 小时前
Vue 组件库从创建到发布全流程
前端·javascript·vue.js
月小满1 小时前
DataV轮播时其他组件的内容也一起滚动 修复bug的方法
前端·vue.js·bug·大屏端
小莫分享2 小时前
Github Action 一键部署HTML 静态服务
前端·html·github