推荐一个基于Vue的H5快速开发模板本项目已经为你生成了一个完整的开发框架,下面是整个项目的目录结构。启动完成后

本项目已经为你生成了一个完整的开发框架,下面是整个项目的目录结构。

接下来你可以修改代码进行业务开发了,本项目内建了典型业务模板、模拟数据、状态管理、国际化、全局路由等等各种实用的功能来辅助开发

#项目打包npmrunbuild:xxx#自动创建npmrunnew#规范Git提交npmrungit-cz#生成CHANGELOGnpmrungenlog分层架构目前前端的一个开发趋势是以搭建单页应用(SPA)为主的。当应用体系比较大,或者你的应用业务逻辑足够复杂的时候,会遇到各种各样的问题,我们随便提两点:

针对上面所遇到的问题,我们以下面这张架构图做讲解:

其中视图层/View是大家接触最多的,想必大家都很了解,就不在这里介绍了,重点介绍其他几个层的含义:

Services层是用来对底层技术进行操作的,例如封装AJAX请求,操作浏览器Cookie、LocaStorage、IndexedDB,操作Native提供的能力(如调用摄像头等),以及建立Websocket与后端进行交互等。

Axios封装

.....exportdefaultasyncfunction(options){const{url}=optionsconstrequestOptions=Object.assign({},options)try{const{data,data:{errno,errmsg}}=awaitinstance.request(requestOptions)if(errno){errorReport(url,errmsg,requestOptions,data)thrownewError(errmsg)}returndata}catch(err){errorReport(url,err,requestOptions)throwerr}}IndexedDB

...exportclassDBRequest{instancestaticgetInstance(){if(!this.instance){this.instance=newDBRequest()}returnthis.instance}asynccreate(options={}){const{name,data}=optionsconstdb=awaitindexDB(name)returnawaitdb.add(name,data)}...}.......

实体Entity是领域驱动设计的核心概念,它是领域服务的载体,它定义了业务中某个个体的属性和方法。区分一个对象是否是实体,主要是看他是否有唯一的标志符(例如id)

通过上面的代码可以看到,这里主要是以实体本身的属性以及派生属性为主,当然实体本身也可以具有方法,用于实现属于实体自身的业务逻辑。

并不是所有的实体都应该按上面那样封装成一个类,如果某个实体本身业务逻辑很简单,就没有必要进行封装,例如本模板中的Test只是做个演示。

Interactors层是负责处理业务逻辑的层,主要是由业务用例组成

import{Request}from'@/utils/request'import{CARDS}from'@/constants/api/test'classTestHttpInteractor{serviceconstructor(service){this.service=service}asyncgetTest(){try{constoptions={url:CARDS}returnawaitthis.service.get(options)}catch(error){throwerror}}asynccreateTest(data){try{constoptons={url:CARDS,data}awaitthis.service.post(optons)}catch(error){throwerror}}...}consttestHttpInteractor=newTestHttpInteractor(Request.getInstance())exportdefaulttestHttpInteractor通过上面的代码可以看到,Sevices层提供的类的实例主要是通过Interactors层的类的构造函数获取到,这样就可以达到两层之间解耦,实现快速切换service的目的了,当然这个和依赖注入DI还是有些差距的,不过已经满足了我们的需求。

当然这种分层架构并不是银弹,其主要适用的场景是:实体关系复杂,而交互相对模式化,例如企业软件领域。相反实体关系简单而交互复杂多变就不适合这种分层架构了。

然后需要明确的是,架构和项目文件结构并不是等同的,文件结构是你从视觉上分离应用程序各部分的方式,而架构是从概念上分离应用程序的方式。你可以在很好地保持相同架构的同时,选择不同的文件结构方式。没有完美的文件结构,因此请根据项目的不同选择适合你的文件结构。

页面整体布局是一个产品最外层的框架结构,这里使用了vue-router路由嵌套,所以一般情况下,你增加或者修改页面只会影响app-main这个主体区域。其它配置在layout中的内容如:底部导航都是不会随着你主体页面变化而变化的。

/foo/bar+------------------++-----------------+|layout||layout||+--------------+||+-------------+|||foo.vue||+------------>||bar.vue|||||||||||+--------------+||+-------------+|+------------------++-----------------+这里在app-main外部包了一层keep-alive主要是为了缓存的,如不需要可自行去除。

在样式开发过程中,有两个问题比较突出:

/*编译前*/.example{color:red;}/*编译后*/.example[_v-f3f3eg9]{color:red;}只要加上stylescoped这样css就只会作用在当前组件内了。

TIP

使用scoped后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的scopedCSS和子组件的scopedCSS的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。

vue-h5-template所有全局样式都在@/src/styles目录下设置

├──styles│├──_animation#全局动画│├──index.scss#全局通用样式│├──_mixin.scss#全局mixin│├──_transition.scss#过渡效果│└──_variables.scss#全局变量一次完整的与服务器端交互在vue-h5-template中,一个完整的前端UI交互到服务端处理流程是这样的:

...exportclassRequest{instancestaticgetInstance(){if(!this.instance){this.instance=newRequest()}returnthis.instance}asyncpost(options={}){const{data}=awaitservice({method:'post',...options})returndata}...}例子定义接口地址统一管理src/constants/api/test.js

exportconstCARDS='/admin/cards'请求方法src/core/interactors/test-interactor.js

asyncgetTest(){try{constoptions={url:CARDS}returnawaitthis.service.get(options)}catch(error){throwerror}}请求方式src/utils/request.js

asyncget(options={}){const{data}=awaitservice({method:'get',...options})returndata}TIP

目录结构不要纠结,个人习惯而定

页面使用src/pages/test/index.vue

#生命周期asynccreated(){if(this.id){awaitthis.handleGetTest()}}#请求asynchandleGetTest(){try{consttest=awaittestInteractor.getTest(this.id)this.addressInfo=Object.assign({},test)}catch(error){console.log(error)}}可能大家会觉得很繁琐,这么多文件容易搞混,重复编写代码等等,不要着急,本模板配置了自动生成文件,上述除了视图/View层这块需要你手动去编写代码,其他的我们都会去一键生成,接下来我们就来讲讲使用方法。

在开发过程中,无论我们添加页面也好还是添加组件等等。都需要不停地新建.vue文件(或者其他框架或者html/js/css文件)

本项目中我一个配置了5项,他们分别代表着什么呢?

module.exports=function(plop){plop.setGenerator('page',pageGenerator)//Pageplop.setGenerator('component',componentGenerator)//组件plop.setGenerator('store',storeGenerator)//vuexplop.setGenerator('interactor',interactorGenerator)//业务逻辑plop.setGenerator('db-interactor',dbInteractorGenerator)//db业务逻辑}TIP

创建模板指令是npmrunnew,记得属于目录或文件名称哦

代码风格在.editorconfig,大家可以按照个人喜欢个性化修改。

首先,搜索并找到你需要的图标,将它采集到你的购物车里,在购物车里,你可以将选中的图标添加到项目中(没有的话,新建一个),后续生成的资源/代码都是以项目为维度的。

现在本项目支持和推荐单独导出svg的引入使用方式。下载方式如下图:

下载完成之后将下载好的.svg文件放入@/icons/svg文件夹下之后就会自动导入。

由于本项目ui框架使用了VantUI,所以国际化的同时也要将其国际化。同时将当前lang语言存在cookie之中,为了下次打开页面能记住上次的语言设置。

exportconstVueVantLocales=(lang=getLocale())=>{switch(lang){case'zh':Locale.use('zh-CN',vantZhLocale)breakcase'en':Locale.use('en-US',vantEnLocale)break}}exportdefaultnewVueI18n({locale:getLocale(),fallbackLocale:getLocale(),messages})使用Html中使用:

//$t是vue-i18n提供的全局方法$t('heoll')Js中使用:

在调试方面,本项目使用vconsole作为手机端调试面板,功能相当于打开PC控制台,可以很方便地查看Console,Network,Element、Storage等关键调试信息。

npmrungenlog就会出现类似与这种的文件格式:

vue最新脚手架中集成了pwa的插件,将pwa的实现变得更加的简单,只需要在vue.config.js文件中配置pwa属性就可以自动生成对应的service-worker.js配置文件,在这不做过多介绍。

THE END
1.H5和微信小程序测试区别01 什么是H5? H5,也就是“HTML5”,指“HTML”的第5个版本。众所周知“HTML”是”超文本标记语言”,是一门描述网页的标准语言,所以HTML5也是一种网页技术,而且是更高级的网页技术,包括HTML、CSS和JavaScript在内的一套技术组合。 所以,H5本质上可以理解为是一个网页,依赖的外壳主要是浏览器,因此只要有浏览器,https://blog.csdn.net/qq_48811377/article/details/144425899
2.h5项目是什么项目答,H5指的是HTML5,即网页使用的HTML代码的第五代标准。HTML5相比以前的标准,增加了对移动设备、音频视频、拖放、本地存储、画布等的支持,使网页可以更加丰富和互动。狭义上,H5指的是一种互动形式的多媒体广告页面,通常可以在手机上浏览和分享,利用HTML5的特性制作出各种动画、游戏、故事等效果,https://zhidao.baidu.com/question/1872531704958681787.html
3.h5项目怎么运行H5教程运行h5 项目需要以下步骤:安装 web 服务器、node.js、开发工具等必要工具。搭建开发环境,创建项目文件夹、初始化项目、编写代码。启动开发服务器,使用命令行运行命令。在浏览器中预览项目,输入开发服务器 url。发布项目,优化代码、部署项目、设置 web 服务器配置。 https://m.php.cn/faq/816524.html
4.近两万字的干货!可能是最全面的网页设计基础知识全攻略微信、浏览器等平台级产品在手机端中火爆促进了依靠入口而传播的 H5 的发展。如果设计出色,你的项目可能会在朋友圈产生病毒传播的效果。 △ 使用前端语言编译的适合手机浏览的H5界面 移动端H5尺寸 设计移动端 H5 项目的时候,我们一般以用户量较高的 iPhone6/7/8的尺寸:750x1334px为准,然后我们要在顶部预留出https://www.uisdc.com/web-design-basics-raiders
5.网页设计必须要懂得的那些事儿使用前端语言编译的适合手机浏览的H5界面 移动端H5尺寸 设计移动端H5项目的时候,我们一般以用户量较高的iPhone6/7/8的尺寸:750x1334px 为准,然后我们要在顶部预留出微信或者浏览器导航区域。主要内容区域就可以自由设计了,一般H5的操作是上下滑动。 字体方面使用苹方字体,并且字号设置为24PX以上,渲染方式设置成锐利https://www.163.com/dy/article/DO2OHDO80511805E.html
6.拍摄是做什么的,落明版良汇解解剖版GFH5人物拍摄是一种艺术和技术相结合的活动,通过使用相机捕捉图像和视频。落明版良汇解则可能指一种拍摄技术或方法,而“解剖版GFH5”可能是指具体拍摄项目或系列。具体内容涉及拍摄原理、技术细节及特定作品分析。 探索拍摄奥秘:落明版良汇解,解剖版GFH5背后的故事 http://www.hukingdee.com/post/4727.html
7.h5项目demoH5项目是什么意思mob64ca140f9cec的技术博客h5项目demo H5项目是什么意思 详细介绍一下H5技术 H5技术指的是HTML5技术,它是一种用于Web开发的标准化标记语言,是HTML4的后继者。H5技术可以用来开发跨平台和可访问的Web应用程序,包括网站、桌面应用程序、移动应用程序等。 H5技术包括以下几个方面: 1. 语义化标签:H5技术引入了一些新的语义化标签,如<header>、https://blog.51cto.com/u_16213681/10681869
8.如何在uniapp项目中嵌套H5页面javascript技巧有一个需求是,在app中嵌入一个H5页面,H5是一个网络页面,不在app项目里,APP可以打开H5页面,实现单点登录,并且在H5 页面中打开APP指定的页面 Web-View 在uniapp中,有一个web-view组件,这就相当于一个浏览器组件,可以用来承载网页的容器,会自动铺满整个页面web-view的详细文档参考uniapp官网 1 https://uniapp.https://www.jb51.net/javascript/316492vlp.htm
9.移动端H5开发之页面适配篇腾讯云开发者社区最近开发并上线了一款H5项目,在这里想和大家分享一下关于项目中使用到的移动端适配技巧,如果对你们有所帮助的话,就多多点赞收藏 各位看官老爷别着急,在讲页面适配之前,我们先来捋一捋viewport(视口)的概念~ 在Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的UI, 菜单栏等——即指你正在浏览的文档的https://cloud.tencent.com/developer/article/2020264
10.腾讯游戏H5:AI古琴疗愈计划是的,我们又双叒做了一个互动H5项目! 项目背景 客户需求非常明确,AI化身古琴疗愈师,我们需要以心理学模型为理论依据定制一个情绪测试H5,最后生成专属的AI谱曲的古琴情绪“药方”。 很快我们便有了逻辑思路。 受如今大火的MBIT启发,不同MBIT会有不同的情绪特征,而一个人的情绪往往与其性格挂钩。于是,我们决定把它https://www.digitaling.com/projects/281364.html
11.推荐20个开源的前端低代码项目tmagic-editor是一款由腾讯技术中心出品的一款开源低代码框架,能够实现零代码/低代码生成页面 , 可以快速搭建可视化页面生产平台,让非技术人员可以通过拖拽和配置,自助生成H5页面、PC页面、TV页面,大大降低页面生产成本 。 项目链接:gitee.com/webapp_qsr/… https://www.easemob.com/news/9525
12.皇帝成长计划2h5大运河怎么建?特殊建筑介绍。游戏中有许多种玩法,建筑功能也算是其亮点之一。这些建筑不仅仅彰显着玩家的国力水平,同时还能提供一些特殊的属性加成,方便大家在游戏中发展。今天,小编就给大家介绍下皇帝成长计划2h5大运河怎么建? 一、如何建造 1、上朝时,点击下方选项栏中的“工”字图标。点击后可以选择安排建造功能,可建造的建筑就会在列表中等待https://m.wandoujia.com/apps/2061139/6880764781590414502.html
13.uniapp实战之单击菜单发布单击菜单发布->H5 对于在当前项目下的unpackage/dist/build/h5目录中找到的资源,请部署服务器(或使用本地服务器预览)。如果需要部署到相对路径(支持打开本地文件协议),请参阅:https://ask.dcloud.net.cn/article/37432。 如何引用第三方js: 通过npm引入(只有h5平台可以通过条件编译导入相应的库)编辑清单中h5节点https://open.alipay.com/portal/forum/post/161601022
14.全新UI功能3.0腾讯IM即时通讯+视频聊天(APP小程序H5)三端--- 可定制各类高端需求、定制 IM、解决问题、定制项目: 复制代码1.高效率研发团队,承接定制各类项目需求; 2.承接各类高端 APP、小程序、H5 项目,定制联系群主的 QQ:270315475; -介绍 隐私、权限声明 1. 本插件需要申请的系统权限列表: . 2. 本插件采集https://ext.dcloud.net.cn/plugin?id=3803
15.抖音商城系统源码开发H5源码火爆项目区块源码H5源码,, 展开全文 商务服务 ?软件开发 ?APP开发 ? 郑州APP开发 我们其他产品 抖音商城小程序源码部署行业app软件成品开发2023-03-31 抖音商城小程序源码解决方案火爆项目2023-03-31 抖音吃喝玩乐小程序源码解决方案火爆项目2023-03-31 抖音吃喝玩乐小程序源码行业app软件快速上线2023-03-31 抖音多商户小https://m.11467.com/product/d19300156.htm
16.你了解数据期刊么?你知道什么是“人类企鹅项目”么?ScientificData最近,由12个国家15个心理学研究者团队合作收集、由本人与殷继兴(西北师范大学心理学院)主要负责整理的数据——人类企鹅项目数据——发表在数据期刊 Scientific data上(Hu et al., 2019)。这对于一直在推Open Science的我来说,是非常值得开心的,因为这说明科学界也奖励分享研究数据本身。也就是说,研究者用于整理数据https://news.sciencenet.cn/htmlpaper/2019/5/20195141955751550212.shtm
17.H5开发app项目是什么意思?有那些步骤?H5开发app项目是什么意思?有那些步骤? H5开发app项目是一种利用HTML5技术来构建移动应用的方法,它具有跨平台、开发成本低、更新迭代快等优点。H5开发app项目的主要步骤如下:1. 确定项目需求和目标,分析用户画像和市场竞争,制定项 H5开发app项目是一种利用HTML5技术来构建移动应用的方法,它具有跨平台、开发成本低、https://www.yimenapp.com/kb-yimen/16813/
18.H5开发app项目是什么意思?有那些步骤?技术博客H5开发app项目是什么意思?有那些步骤? H5开发app项目是一种利用HTML5技术来构建移动应用的方法,它具有跨平台、开发成本低、更新迭代快等优点。H5开发app项目的主要步骤如 下: 1. 确定项目需求和目标,分析用户画像和市场竞争,制定项目计划和设计方案。 2. 选择合适的H5开怎么发框架和工具,如uni-app、Taro、Flutterhttps://www.yimenapp.net/knowledge/blog-1454.html
19.H5客户端开发(微信小游戏捕鱼项目)是做什么的1、计算机相关专业毕业,3年以上H5游戏开发经验,1年以上LayaBox开发经验; 2、精通JavaScript和TypeScript,具备初步的游戏前端框架设计能力; 3、全面掌握H5游戏性能优化的方法,且有实际优化经验; 4、善于沟通,能妥善处理项目开发过程中遇到的各类项目问题; 5、有较强的学习能力和承压能力; https://www.zhipin.com/job_detail/f165be2f98ee38f31nJ83NW9FVtV.html
20.大学毕业三年后,我成功拿下B站offer,分享下B站五面面经(附过程答:领导你好;我叫**,16年本科毕业于***大学;毕业后在合肥卫宁,一家医疗软件公司工作,技术上前后端、数据库包括项目部署都做,属于全栈开发,18年来到上海入职京东一直到现在,做的是线下商场的后台及接口开发;老的项目还是mvc,新项目都做了前后端分离,前端用到H5、小程序JQuery、EasyUI、VUE、Angular,后端用到.Nethttps://maimai.cn/article/detail?fid=1693413786&efid=jhBZWfE8_tfp7FIFxkzT-A
21.2023Web前端开发八股文&面试题(万字系列)——这篇就够了!1.2 h5新特性 新增选择器 document.querySelector、document.querySelectorAll 拖拽释放(Drag and drop) API 媒体播放的 video 和 audio 本地存储 localStorage 和 sessionStorage 离线应用 manifest 桌面通知 Notififications 语意化标签 article、footer、header、nav、section https://developer.aliyun.com/article/1353677