CN109271149A - 一种架构单页应用程序的方法 - Google Patents
一种架构单页应用程序的方法 Download PDFInfo
- Publication number
- CN109271149A CN109271149A CN201811150789.3A CN201811150789A CN109271149A CN 109271149 A CN109271149 A CN 109271149A CN 201811150789 A CN201811150789 A CN 201811150789A CN 109271149 A CN109271149 A CN 109271149A
- Authority
- CN
- China
- Prior art keywords
- module
- theme
- axios
- subfile
- router
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种架构单页应用程序的方法,包括:创建mian.js,在mian.js引入store模块、views模块、router模块、axios模块、components模块和util模块。本发明基于Vue.js+Vuex+iView+Axios架构单页程序,结合了以数据驱动和组件化的思想、状态管理模式、开源UI组件库以及基于promise用于浏览器和node.js的http客户端,提供更简洁和易于理解的API,集中管理应用的所有组件的状态,可以通过编辑变量列表定制UI主题,实现了程序的快速开发、减少开发周期以及降低了时间成本。
Description
技术领域
本发明涉及计算机技术与WEB应用开发技术领域,具体的说,是一种架构单页应用程序的方法。
背景技术
Vue.js自2016年大火,现在是前端开发主流的一个JavaScriptMVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得用户能快速上手并使用Vue.js。Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。为了快速运用新技术来开发或重构项目,本发明实例提供了一种以Vue.js+Vuex+iView+Axios架构单页应用程序的方法,用户可以迅速使用该方法投入开发,使其项目开发周期缩短,开发成本下降。
发明内容
本发明的目的在于提供一种架构单页应用程序的方法,用于解决现有技术中开发或重构项目不够快速,开发周期长,开发成本高的问题。
本发明通过下述技术方案解决上述问题:
一种架构单页应用程序的方法,包括:
创建入口文件mian.js,在入口文件mian.js引入store模块、views模块、router模块、axios模块、components模块和util模块,其中:
store模块:包括子文件xx.js、getter.js、index.js和generator.js,所述子文件xx.js根据业务需求创建,并定义了state、mutation和action;所述generator.js包含根据子文件xx.js的命名和收到的网络请求接口生成state、mutation和action的方法,所述生成state、mutation和action的方法被映射到子文件xx.js中;所述getter.js获取state数据,并返回至index.js,index.js用于组装子文件xx.js和getter.js,并导出至views模块;
views模块:包括app.vue、theme.less和module,所述app.vue为程序的主组件,所述theme.less用于提供UI主题,所述module为根据业务划分的子模块,所述子模块内包含功能页面;
router模块:包含router.js,用于创建新路由,并将组件映射到路由,接收theme.less的UI主题并向main.js提供渲染组件的位置;
axios模块:包括fetch.js,用于初始化axios模块并配置网络拦截器,并将网络请求接口传递给store模块的generator.js;
components模块:包含自定义控件;
util模块:用作工具箱,所述工具箱包含用于写入复用的数据的混入文件。
原理:
axios模块、store模块、components模块、util模块、views模块和router模块,六个模块功能划分清晰:
以axios模块作为http客户端发起网络请求获取数据,并将网络请求接口传递至store模块中的generator.js;
store模块中可以根据业务需求创建子文件xx.js,xx.js中定义的state用于记录状态,通过mutation改变state状态,action用以异步分发mutation中的具体内容;store模块以Vuex集中存储和管理应用的所有组件的状态,并按照定义的规则保证组件的变化可预测;
views模块以iView作为网页UI组件框架,包含app.vue、theme.less和module,app.vue即程序的主组件,确定了网站布局,其他所有页面都是在app.vue下切换的,theme.less是iView默认提供的一套UI主题,定义了一套样式变量,编辑这个变量列表就可以轻松定制新主题,以满足业务和品牌上的多样化视觉需求;module内是根据业务需求划分的子模块,子模块内有对应功能的页面。
router模块将组件映射到路由,以Vue-router渲染组件;store模块和views模块根据业务需求划分出对应的子模块,六个模块功能划分清晰。
Components模块:包含各种根据业务需求编写的自定义控件,在页面可引入使用。也可用npm安装github上的第三方控件并在页面中直接使用。
用户更改axios模块的fetch.js文件内的网络请求接口地址和对应命名,根据业务需求创建store模块内的子模块xx.js,在其中声明与fetch.js相同的接口命名,再根据业务需求编写自定义getter.js,在index.js中将子模块xx.js和getter组合起来并导出store模块,由此,便结合Axios和Vuex完成了整个项目的网络接口请求数据并全局管理数据的功能。之后,用户再根据业务需求编写views模块的app.vue确定整个系统的布局,编写views模块的子模块页面,修改theme.less定制新主题,根据需要编写components模块中的自定义控件和工具类,最后编写router模块的router.js,创建新Router将组件映射到路由,由此便完成整个程序。用户根据业务需求可自行修改本架构中的模块,比如若利用iView的theme.less来创建新主题无法满足视觉需求,可以另新建CSS文件来编写样式。
本发明与现有技术相比,具有以下优点及有益效果:
本发明基于Vue.js+Vuex+iView+Axios架构单页程序,结合了以数据驱动和组件化的思想、状态管理模式、开源UI组件库以及基于promise用于浏览器和node.js的http客户端,提供更简洁和易于理解的API,集中管理应用的所有组件的状态,可以通过编辑变量列表定制UI主题,实现了程序的快速开发、减少开发周期以及降低了时间成本。
附图说明
图1为本发明的架构图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种架构单页应用程序的方法,包括:
创建入口文件mian.js,在入口文件mian.js引入store模块、views模块、router模块、axios模块、components模块和util模块,其中:
store模块:包括子文件xx.js、getter.js、index.js和generator.js,所述子文件xx.js根据业务需求创建,并定义了state、mutation和action;所述generator.js包含根据子文件xx.js的命名和收到的网络请求接口生成state、mutation和action的方法,所述生成state、mutation和action的方法被映射到子文件xx.js中;所述getter.js获取state数据,并返回至index.js,index.js用于组装子文件xx.js和getter.js,并导出至views模块;
views模块:包括app.vue、theme.less和module,所述app.vue为程序的主组件,所述theme.less用于提供UI主题,所述module为根据业务划分的子模块,所述子模块内包含功能页面;
router模块:包含router.js,用于创建新路由,并将组件映射到路由,接收theme.less的UI主题并向main.js提供渲染组件的位置;
axios模块:包括fetch.js,用于初始化axios模块并配置网络拦截器,并将网络请求接口传递给store模块的generator.js;
components模块:包含自定义控件;
util模块:用作工具箱,所述工具箱包含用于写入复用的数据的混入文件。
原理:
axios模块、store模块、components模块、util模块、views模块和router模块,六个模块功能划分清晰:
以axios模块作为http客户端发起网络请求获取数据,并将网络请求接口传递至store模块中的generator.js;
store模块中可以根据业务需求创建子文件xx.js,xx.js中定义的state用于记录状态,通过mutation改变state状态,action用以异步分发mutation中的具体内容;store模块以Vuex集中存储和管理应用的所有组件的状态,并按照定义的规则保证组件的变化可预测;
views模块以iView作为网页UI组件框架,包含app.vue、theme.less和module,app.vue即程序的主组件,确定了网站布局,其他所有页面都是在app.vue下切换的,theme.less是iView默认提供的一套UI主题,定义了一套样式变量,编辑这个变量列表就可以轻松定制新主题,以满足业务和品牌上的多样化视觉需求;module内是根据业务需求划分的子模块,子模块内有对应功能的页面。
router模块将组件映射到路由,以Vue-router渲染组件;store模块和views模块根据业务需求划分出对应的子模块,六个模块功能划分清晰。
Components模块:包含各种根据业务需求编写的自定义控件,在页面可引入使用。也可用npm安装github上的第三方控件并在页面中直接使用。
用户更改axios模块的fetch.js文件内的网络请求接口地址和对应命名,根据业务需求创建store模块内的子模块xx.js,在其中声明与fetch.js相同的接口命名,再根据业务需求编写自定义getter.js,在index.js中将子模块xx.js和getter组合起来并导出store模块,由此,便结合Axios和Vuex完成了整个项目的网络接口请求数据并全局管理数据的功能。之后,用户再根据业务需求编写views模块的app.vue确定整个系统的布局,编写views模块的子模块页面,修改theme.less定制新主题,根据需要编写components模块中的自定义控件和工具类,最后编写router模块的router.js,创建新Router将组件映射到路由,由此便完成整个程序。用户根据业务需求可自行修改本架构中的模块,比如若利用iView的theme.less来创建新主题无法满足视觉需求,可以另新建CSS文件来编写样式。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (1)
1.一种架构单页应用程序的方法,其特征在于,包括:
创建入口文件mian.js,在入口文件mian.js引入store模块、views模块、router模块、axios模块、components模块和util模块,其中:
store模块:包括子文件xx.js、getter.js、index.js和generator.js,所述子文件xx.js根据业务需求创建,并定义了state、mutation和action;所述generator.js包含根据子文件xx.js的命名和收到的网络请求接口生成state、mutation和action的方法,所述生成state、mutation和action的方法被映射到子文件xx.js中;所述getter.js获取state数据,并返回至index.js,index.js用于组装子文件xx.js和getter.js,并导出至views模块;
views模块:包括app.vue、theme.less和module,所述app.vue为程序的主组件,所述theme.less用于提供UI主题,所述module为根据业务划分的子模块,所述子模块内包含功能页面;
router模块:包含router.js,用于创建新路由,并将组件映射到路由,接收theme.less的UI主题并向main.js提供渲染组件的位置;
axios模块:包括fetch.js,用于初始化axios模块并配置网络拦截器,并将网络请求接口传递给store模块的generator.js;
components模块:包含自定义控件;
util模块:用作工具箱,所述工具箱包含用于写入复用的数据的混入文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811150789.3A CN109271149B (zh) | 2018-09-29 | 2018-09-29 | 一种架构单页应用程序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811150789.3A CN109271149B (zh) | 2018-09-29 | 2018-09-29 | 一种架构单页应用程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109271149A true CN109271149A (zh) | 2019-01-25 |
CN109271149B CN109271149B (zh) | 2021-04-27 |
Family
ID=65194880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811150789.3A Active CN109271149B (zh) | 2018-09-29 | 2018-09-29 | 一种架构单页应用程序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271149B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966360A (zh) * | 2020-08-18 | 2020-11-20 | 浪潮云信息技术股份公司 | 一种用于项目发布管理模型的单元应用开发方法及系统 |
CN112612627A (zh) * | 2020-12-28 | 2021-04-06 | 江苏梨柳科技有限公司 | 一种web端实现三维互动的方法 |
CN112711408A (zh) * | 2020-12-31 | 2021-04-27 | 南威软件股份有限公司 | 基于Vue组件化的可视化配置渲染方法、系统、终端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605516A (zh) * | 2013-11-12 | 2014-02-26 | 国家电网公司 | 柔性Web展现框架模型架构设计方法 |
US20150052498A1 (en) * | 2013-08-13 | 2015-02-19 | Salesforce.Com, Inc. | Responsive self-service website template |
CN107291523A (zh) * | 2017-08-01 | 2017-10-24 | 北京亚鸿世纪科技发展有限公司 | 一种Web前端消息总线系统 |
CN107562425A (zh) * | 2017-08-07 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 基于Hybrid应用的单页面应用创建方法及装置 |
US20180025140A1 (en) * | 2016-07-24 | 2018-01-25 | Darrin Edelman | Identity Assurance Method |
CN107991905A (zh) * | 2017-12-25 | 2018-05-04 | 南京邮电大学 | 一种基于Web的多无人机任务规划的仿真系统 |
-
2018
- 2018-09-29 CN CN201811150789.3A patent/CN109271149B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150052498A1 (en) * | 2013-08-13 | 2015-02-19 | Salesforce.Com, Inc. | Responsive self-service website template |
CN103605516A (zh) * | 2013-11-12 | 2014-02-26 | 国家电网公司 | 柔性Web展现框架模型架构设计方法 |
US20180025140A1 (en) * | 2016-07-24 | 2018-01-25 | Darrin Edelman | Identity Assurance Method |
CN107291523A (zh) * | 2017-08-01 | 2017-10-24 | 北京亚鸿世纪科技发展有限公司 | 一种Web前端消息总线系统 |
CN107562425A (zh) * | 2017-08-07 | 2018-01-09 | 上海斐讯数据通信技术有限公司 | 基于Hybrid应用的单页面应用创建方法及装置 |
CN107991905A (zh) * | 2017-12-25 | 2018-05-04 | 南京邮电大学 | 一种基于Web的多无人机任务规划的仿真系统 |
Non-Patent Citations (3)
Title |
---|
OGUNDIPE SAMUEL AYO: "How To Build A Simple Single Page Application Using Vue 2", 《HTTPS://SCOTCH.IO/TUTORIALS/HOW-TO-BUILD-A-SIMPLE-SINGLE-PAGE-APPLICATION-USING-VUE-2-PART-1》 * |
掘金: "基于iView的Vue js后台管理系统,简洁易扩展", 《HTTPS://JUEJIN.IM/ENTRY/5902BF69B123DB3EE46B510D》 * |
离尘不理人: "使用Vuex+Vue.js构建单页应用", 《HTTPS://SEGMENTFAULT.COM/A/1190000005891026》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966360A (zh) * | 2020-08-18 | 2020-11-20 | 浪潮云信息技术股份公司 | 一种用于项目发布管理模型的单元应用开发方法及系统 |
CN112612627A (zh) * | 2020-12-28 | 2021-04-06 | 江苏梨柳科技有限公司 | 一种web端实现三维互动的方法 |
CN112612627B (zh) * | 2020-12-28 | 2024-04-05 | 江苏梨柳科技有限公司 | 一种web端实现三维互动的方法 |
CN112711408A (zh) * | 2020-12-31 | 2021-04-27 | 南威软件股份有限公司 | 基于Vue组件化的可视化配置渲染方法、系统、终端 |
Also Published As
Publication number | Publication date |
---|---|
CN109271149B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7448024B2 (en) | System and method for software application development in a portal environment | |
KR101130525B1 (ko) | 서식 유형들을 사용하여 서식을 생성하기 위한 방법 및장치 | |
CN102541556B (zh) | 分布式应用程序的设计平台 | |
JP5941541B2 (ja) | モバイル・アプリケーション開発のためのシステムおよび方法 | |
US20070220035A1 (en) | Generating user interface using metadata | |
CN109271149A (zh) | 一种架构单页应用程序的方法 | |
CN112799968B (zh) | 一种基于脚本的测试驱动建模系统及方法 | |
Paternò | Model-based tools for pervasive usability | |
McKelvey | FCJ-128 A Programmable Platform? Drupal, Modularity, and the Future of the Web | |
CN102135873A (zh) | 一种创建用户界面的方法和装置 | |
Obrenović et al. | End-user service computing: Spreadsheets as a service composition tool | |
CN108563475A (zh) | 应用程序的运行方法、装置及存储介质 | |
CA3018676C (en) | Systems and methods for dependency-based streamlined processing | |
CN111857710A (zh) | 一种基于内嵌chromium开发Eclipse插件的方法及装置 | |
KR20210071215A (ko) | 다양한 조건 하의 어플리케이션 개발 지원 시스템 | |
EP4030282A1 (en) | Computing system and method for software architecture planning | |
US11880668B2 (en) | Dynamically altering a code execution workflow during development using augmented reality | |
Kikukawa et al. | Development of a LMS with dynamic support functions for active learning | |
Spallino | Native versus hybrid mobile application development for professional membership services | |
Mather | The devsjava simulation viewer: A modular gui that visualizes the structure and behavior of hierarchical devs models | |
Michaud | A software customization framework | |
Feuerstack | A Method for the User-centered and Model-based Development of Interactive Applications | |
Coutaz et al. | Interactive systems and user‐centered adaptation: the plasticity of user interfaces | |
Sutter et al. | Knative Cookbook: Building Effective Serverless Applications with Kubernetes and OpenShift | |
O'Callaghan | Patterns for Architectural Praxis. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |