首先要介绍自己的项目,项目目标是什么,比如:
目标是为开发中大型项目提供开箱即用的解决方案。包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。项目会使用前端较新的技术栈,可以作为项目的启动模版,以帮助你快速搭建企业级中后台产品原型。也可以作为一个示例,用于学习vue3、vite、ts等主流技术。该项目会持续跟进最新技术,并将其应用在项目中。
简单的介绍一下项目
编辑
添加图片注释,不超过 140 字(可选)
准备一个文档用于介绍项目常用配置,项目主题,样式,组件等说明
介绍项目中使用到的技术,比如下面的举例:
本项目需要一定前端基础知识,请确保掌握 Vue 的基础知识,以便能处理一些常见的问题。 建议在开发前先学一下以下内容,提前了解和学习这些知识,会对项目理解非常有帮助:
考虑到硬件支持等情况说明:
本地开发推荐使用Chrome 最新版浏览器,不支持Chrome 80以下版本。
生产环境支持现代浏览器,不支持 IE。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
项目内集成了以下几种代码校验方式
ESLint 是一个代码规范和错误检查工具,有以下几个特性
执行下面代码.能修复的会自动修复,不能修复的需要手动修改 yarn run lint:eslint
项目的 eslint 配置位于根目录下 .eslintrc.js 内,可以根据团队自行修改代码规范
推荐使用 vscode 进行开发,vscode 自带 eslint 插件,可以自动修改一些错误。
同时项目内也自带了 vscode eslint 配置,具体在 .vscode/setting.json 文件夹内部。只要使用 vscode 开发不用任何设置即可使用
在一个团队中,每个人的 git 的 commit 信息都不一样,五花八门,没有一个机制很难保证规范化,如何才能规范化呢?可能你想到的是 git 的 hook 机制,去写 shell 脚本去实现。这当然可以,其实 JavaScript 有一个很好的工具可以实现这个模板,它就是 commitlint(用于校验 git 提交信息规范)。
commit-lint 的配置位于项目根目录下 commitlint.config.js
stylelint 用于校验项目内部 css 的风格,加上编辑器的自动修复,可以很好的统一项目内部 css 风格
stylelint 配置位于根目录下 stylelint.config.js
如果您使用的是 vscode 编辑器的话,只需要安装下面插件,即可在保存的时候自动格式化文件内部 css 样式
插件
StyleLint
prettier 可以用于统一项目代码风格,统一的缩进,单双引号,尾逗号等等风格
prettier 配置文件位于项目根目录下 prettier.config.js
如果您使用的是 vscode 编辑器的话,只需要安装下面插件,即可在保存的时候自动格式化文件内部 js 格式
插件
Prettier
说明目录使用规范:
.
├── build # 打包脚本相关
├── mock # mock文件夹
├── public # 公共静态资源目录
├── src # 主目录
│ ├── api # 接口文件
│ ├── assets # 资源文件
│ │ ├── icons # icon sprite 图标文件夹
│ │ ├── images # 项目存放图片的文件夹
│ │ └── svg # 项目存放svg图片的文件夹
│ ├── components # 公共组件
│ ├── design # 样式文件
│ ├── directives # 指令
│ ├── enums # 枚举/常量
│ ├── hooks # hook
│ │ ├── component # 组件相关hook
│ │ ├── core # 基础hook
│ │ ├── event # 事件相关hook
│ │ ├── setting # 配置相关hook
│ │ └── web # web相关hook
│ ├── layouts # 布局文件
│ │ ├── default # 默认布局
│ │ ├── iframe # iframe布局
│ │ └── page # 页面布局
│ ├── locales # 多语言
│ ├── logics # 逻辑
│ ├── main.ts # 主入口
│ ├── router # 路由配置
│ ├── settings # 项目配置
│ │ ├── componentSetting.ts # 组件配置
│ │ ├── designSetting.ts # 样式配置
│ │ ├── encryptionSetting.ts # 加密配置
│ │ ├── localeSetting.ts # 多语言配置
│ │ ├── projectSetting.ts # 项目配置
│ │ └── siteSetting.ts # 站点配置
│ ├── store # 数据仓库
│ ├── utils # 工具类
│ └── views # 页面
├── test # 测试
│ └── server # 测试用到的服务
│ ├── api # 测试服务器
│ ├── upload # 测试上传服务器
│ └── websocket # 测试ws服务器
├── types # 类型文件
├── vite.config.ts # vite配置文件
└── windi.config.ts # windcss配置文件
主要是提供不同环境的项目配置功能:
项目的环境变量配置位于项目根目录下的 .env、.env.development、.env.production
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
1、组件默认参数配置、组件,分页、弹窗等等、显示、隐藏;
2、缓存配置
3、配置多语言信息
4、主题色配置
5、css 前缀设置
6、用于预设一些颜色数组
路由主要以meta配置为主。
Meta 配置说明:比如:
1、外部页面嵌套
2、外链
3、动态路由Tab自动关闭功能
4、这里的icon配置,会同步到菜单
5、新增路由
6、Redirect
7、如何开启页面缓存、如何让某个页面不缓存
export interface RouteMeta {
// 路由title 一般必填
title: string;
// 动态路由可打开Tab页数
dynamicLevel?: number;
// 动态路由的实际Path, 即去除路由的动态部分;
realPath?: string;
// 是否忽略权限,只在权限模式为Role的时候有效
ignoreAuth?: boolean;
// 可以访问的角色,只在权限模式为Role的时候有效
roles?: RoleEnum[];
// 是否忽略KeepAlive缓存
ignoreKeepAlive?: boolean;
// 是否固定标签
affix?: boolean;
// 图标,也是菜单图标
icon?: string;
// 内嵌iframe的地址
frameSrc?: string;
// 指定该路由切换的动画名
transitionName?: string;
// 隐藏该路由在面包屑上面的显示
hideBreadcrumb?: boolean;
// 如果该路由会携带参数,且需要在tab页上面显示。则需要设置为true
carryParam?: boolean;
// 隐藏所有子菜单
hideChildrenInMenu?: boolean;
// 当前激活的菜单。用于配置详情页时左侧激活的菜单路径
currentActiveMenu?: string;
// 当前路由不再标签页显示
hideTab?: boolean;
// 当前路由不再菜单显示
hideMenu?: boolean;
// 菜单排序,只对第一级有效
orderNo?: number;
// 忽略路由。用于在ROUTE_MAPPING以及BACK权限模式下,生成对应的菜单而忽略路由。2.5.3以上版本有效
ignoreRoute?: boolean;
// 是否在子级菜单的完整path中忽略本级path。2.5.3以上版本有效
hidePathForChildren?: boolean;
}
实现原理: 在前端固定写死路由的权限,指定路由有哪些权限可以查看。只初始化通用的路由,需要权限才能访问的路由没有被加入路由表内。在登陆后或者其他方式获取用户角色后,通过角色去遍历路由表,获取该角色可以访问的路由表,生成路由表,再通过 router.addRoutes 添加到路由实例,实现权限的过滤。
缺点: 权限相对不自由,如果后台改动角色,前台也需要跟着改动。适合角色较固定的系统
提供不同环境的联调和测试功能
1、没有跨域时的配置
2、跨域原理解析
接口统一存放于 src/api/ 下面管理
1、更改参数格式
2、多个接口地址
3、删除请求 URL 携带的时间戳参数
Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发进程所阻塞。
本地 mock 采用 Node.js 中间件进行参数拦截(不采用 mock.js 的原因是本地开发看不到请求参数和响应结果)。
由于该项目是一个展示类项目,线上也是用 mock 数据,所以在打包后同时也集成了 mock。通常项目线上一般为正式接口。
项目线上 mock 采用的是 mockjs 进行 mock 数据模拟。
提供组件注册功能,丰富全局注册,异步注册等方式;
1、按需引入
2、全局注册
3、全局按需注册
主要介绍如何在项目中使用和规划样式文件。
考虑2个点:
1、全局使用
2、局部使用
项目开发完成之后,执行以下命令进行构建
yarn build
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件
在 .env.production 内
设置 LEGACY=true 即可打包出兼容旧版浏览器的代码
LEGACY = true
发布之前可以在本地进行预览,有多种方式,这里介绍两种
不能直接打开构建后的 html 文件
先打包在进行预览 yarn preview
直接预览本地 dist 文件目录 yarn preview:dist
1、开启 gzip 压缩(开启 gzip,并配合 nginx 的gzip_static功能可以大大加快页面访问速度)
2、开启 brotli 压缩(brotli 是比 gzip 压缩率更高的算法,可以与 gzip 共存不会冲突,需要 nginx 安装指定模块并开启即可。)
简单的部署只需要将最终生成的静态文件,dist 文件夹的静态文件发布到你的 cdn 或者静态服务器即可,需要注意的是其中的 index.html 通常会是你后台服务的入口页面,在确定了 js 和 css 的静态之后可能需要改变页面的引入路径。
项目前端路由使用的是 vue-router,所以你可以选择两种方式:history 和 hash。
高兴铁铁们能来看html网页设计第二期~~~~撒花~~~~~
哎呀呀~实在是抱歉备注标签我记错了QAQ
<!--内容打这里-->这个才是备注标签不是//
首先我们先来学习上节课留下的剧透,分别是:
有人就说了标题标签上次剧透不就只有h1标签吗?
嘿嘿,其实他还有兄弟姐妹啦~
看图,代码是从上往下从左往右执行的请记住这个顺序哦~
还有,左边是代码右边是网页上面的效果哦~
源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>页面标题</title>
</head>
<body>
<!--标题标签是h1~h6-->
<h1>1</h1><!--最大-->
<h2>2</h2>
<h3>3</h3>
<h4>4</h4>
<h5>5</h5>
<h6>6</h6><!--最小-->
</body>
</html>
如图所示,h1标签是最大的,h6标签是最小的
是不是很简单呀,现在已经学会了一个知识点了哦~
源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!--千万要记住内容是写在标签里面的哦~-->
<!--段落标签是独占一条的哦-->
<p>第一条p标签</p>
<p>第二条p标签</p>
<p>第三条p标签</p>
</body>
</html>
链接标签是什么?顾名思义就是一个链接看代码:
<a href="https://www.baidu.com">百度</a>
href是什么东西啊?是a标签的属性啦~里面用来输入你需要跳转到的网页的链接
属性里面的东西是不会出现在网页上面的出现的只有在a标签里面的内容哦
当我点击百度这两个字后就给我跳转到了我们href属性里面的https://www.baidu.com
当然我们也可以跳转到我们自己制作的网页上面但要求是同一个项目下面的网页
是不是很有趣~
看视频:
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
视频中我们点击链接后就跳转到了山这个网页出现了一张山的图片,是不是有点小意思~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<a href="new_file3.html">跳转到山的网页</a><!--只有同一个项目下面的网页才能相互跳转-->
</body>
</html>
图像标签标签如其意,就是用来上传图像的一个标签~~
我们这里介绍一下img的两个属性:
<img src="img/OIP-C.jpg" alt="山"/>
src就是用来放图片的地址的,他会根据地址去找图片然后把图片放到网页上面。
alt有什么用啊就是当图片显示失败的时候就会显示alt里面的文字
看视频:
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
我们把图片的地址破坏后,就会显示一个图片错误的图标和alt里面的内容
怎么拖图片到img文件下,老师~~~我不知道
看视频
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
嘿嘿就直接把文件拖进来就ok了是不是很简单~
okk,好快啊怎么一下就学完了今天的知识点~~~
嘻嘻今天可是有作业的~
请根据下面的网页仿写一下:
完成后作业发再评论区哦,有什么不懂的可以留言包回答的。
加油呀,每天学一点争取做出属于自己的一个网页~
上一期
ni-app 是公司常用的一个框架,随着 vue3 的普及,好多公司的项目都已经开始使用 vue3 + uni-app + vite 开发项目,顺手记录和分享一下我在这过程中遇到的问题。
npm 都很熟,可是与 npm 如此相似的 npx 是干嘛的呢?我们为甚要介绍 npx ?
由于 uni-app 官方提供创建命令使用的是 npx,所以我们先来了解下 npx 是干什么的?它与 npm 的区别。
npx 是 npm 的高级版本,它从 npm v5.2 版本开始引入的,与 npm 绑定在一起,无需额外安装,具有更大的功能。npx 是 npm exec 的别名,如果没有时,可以手动:npm install -g npx 进行安装。
区别:
2.1、创建 js 开发的项目:
npx degit dcloudio/uni-preset-vue#vite my-vue3-js
执行命令后会自动创建项目,然后执行:
cd my-vue3-js // 进入my-vue3-js项目
执行:
npm install
依赖下载完成之后,就可以使用命令:
npm run dev:h5
启动网页服务。至此,项目就创建完成,并可进行预览:
2.2、创建以 typeScript 开发的项目
创建命令:
npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project
回车开始创建的时候会报错:could not fetch remote https://github.com/dcloudio/uni-prset-vue,由于网络或者域名拦截引起的错误。
可以直接打开 github 地址:https://github.com/dcloudio/uni-preset-vue
或者 gitee 下载地址:https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts.zip
下载 zip 压缩包。
解压之后,运行:
npm install
安装依赖完成之后,可以使用:
npm run dev:h5
就可以正常运行项目了。
如果不熟悉 uni-app 项目的同学,可以自己在官网看看它的运行命令都有哪些以及它们的意义。
官方创建文档地址:https://uniapp.dcloud.io/quickstart-cli.html#%E5%88%9B%E5%BB%BAuni-app
以 uni-app + vue3 + vite + ts 项目为例,项目结构目录如图:
src 存放开发资源文件,基本要做的事情都在这个目录内,里面又包含了几个目录文件:
*请认真填写需求信息,我们会在24小时内与您取得联系。