返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何理解Angular项目构建中的组织结构
  • 655
分享到

如何理解Angular项目构建中的组织结构

2024-04-02 19:04:59 655人浏览 安东尼
摘要

如何理解angular项目构建中的组织结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前几天刚刚把项目的组织结构进行了一次重构,这是前端项目

如何理解angular项目构建中的组织结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

前几天刚刚把项目的组织结构进行了一次重构,这是前端项目至今第二次进行组织结构上大的变化,也是一个"folder by type"到"folder by feature"的过程.

如何理解Angular项目构建中的组织结构

为什么有这个过程?

因为感觉到项目的日益庞大,每次修改一个地方我可能要打开三四个文件,比如说一个页面上的哪里要修改.那么首先是页面的html,然后是Controller,Less,对应接口的service文件等等.整个项目是我一手构建的可能还不会出问题,只是找的时候要回想一下对应的文件,但是如果一个新的成员加入进来,不免就有些疏漏,因为他也很难确定一个页面上的局部变动,到底要涉及到哪些文件.

最开始在项目刚刚构建的时候,也就是只有一个页面的,就开始按照文件类型进行项目的组织.不过随着项目的庞大,以及各方面其他的影响,逐渐,按照type进行划分已经出现了职责不清晰的感觉.

最开始项目的结构大概是这样,太具体的有点记不清了,大概是这样的:

-- static   -- js      -- app.js      -- routers.js      -- services.js      -- directive.js      -- filter.js      -- controllers        -- userController.js        -- someModule.js    -- less      -- index.less      -- user.less      -- someModule.less    -- build      -- all.2014090901.js      -- all.2014090901.CSS  -- templtes    -- index.html    -- user.html

基本结构就是按照功能对Controller进行划分了,因为做的Angular SPA所以基本上一个Controller对应一个子页面,然后将所有的js以及less合并压缩出来,在index页面加载.当然其实还做了一些更细致的工作,这里只是说一下项目的雏形.

接下来都做了哪些改变?

与其说接下来做了哪些改变,不如说一下有哪些东西促进了我们要进行改变.说到这在岔开一个话题,什么叫做稳定良好的文件组织结构,一个我现在下的定义就是"健壮并包容".当一个东西发生变化的时候,你当前的组织结构能够以很小的代价去适应新的变化,而不是整个项目大改特改,甚至牵连到代码.

当雏形完成后,项目日益增大,有两个task进入了要考虑的流程.一个是关于项目的自动化构建,包括是库文件的管理,库之间的依赖关系,代码的压缩合并等,还有静态资源的版本号,开发模式和发布模式下不同代码构建等等.另一个问题就是URL的设计,怎么和文件的组织结构保持高度统一.

这两个问题都比较杂,先说URL的设计吧.

关于"好的URL设计"的定义有好几条,可以自行百度,我不打算抄袭百度百科了.只谈我认为最重要的就是对用户的友好,什么叫URL对用户的友好呢?说白了就是让你的URL一看就懂,一猜一个准.我认为这样设计就可以了,可能你会说了谁会无聊到去记住URL地址呢,想要以后访问收藏一下就可以了.

这个我没什么兴趣去反驳,不过你怎么看不见百度或者淘宝的网站将地址设计为"www.baidu.com/hsakudhkajshdgjasgdjhsgfjhsagfjhsdgfjhasgfj786347823yuisbhdufy".

URL的语义化很大程度上表达了对用户的友好.比如我现在"/restaurant","/restaurant/new","/restaurant/2","/restaurant/2/edit"这几个URL对应的页面分别是:

餐厅页面(列表数据),新建餐厅页面,餐厅id为2的餐厅页面,餐厅id为2的餐厅编辑页面.

很容易猜到不是吗,将2改为其他对应的id也能访问到指定的餐厅页面.这个URL映射关系从结构上说就应该与我们的文件夹结构对应,也就是应该有一个restaurant文件夹,然后里面有详情,新建,编辑等页面以及对应的其他文件.所以基于良好的URL设计,我们是需要一个符合语义的组织文件结构的.

项目的自动化构建怎么牵扯到文件结构?

每个小话题感觉都能引出一些详细的深入的东西,项目自动化构建为了解决什么问题?这个解决了很多问题,但是对于一个Angular SPA来讲主要有两个需求.一个是将静态资源合的整合,比如合并压缩,发布时使用带有版本号的静态资源.另一个是开发过程中的一些Less文件以及JS文件的重新编译,页面自动刷新等.

简单说一是为了发布,一是为了开发,为这两个步骤更加便捷有序做出一些努力.

在上面的过程中,不管是开发还是发布,都会生成很多build出来的文件,这也会影响到你对项目目录和文件组织的调整.

新构建好的项目结构

每一次对于项目的修改都涉及到方方面面的东西,很繁杂,随着项目的日益庞大,这种修改的成本也会越来越高,所以及早确定一个好的架构是很迫切的.先给出当期啊的结构:

如何理解Angular项目构建中的组织结构        

如何理解Angular项目构建中的组织结构      

如何理解Angular项目构建中的组织结构

大致说一下现在怎么划分的,因为是SPA所以肯定有一个index.html作为页面的承载,app.js是angular的main文件,app.less是所有Less文件的入口.

components是angular的各个组件,包括common,services,directives,filters,router,run.js(这个主要是放置一些需要随App一起启动运行的代码,例如插件初始化配置,以及类似路由监听处理事件等).

一个子页面按照功能模块划分在modules中,对应的Controller的JS文件,Less的CSS文件都在一个文件夹内.

build目中的内容全部是生成的,我使用了Bower和Gulp搭配使用,自动化构建项目.

这样目录结构就清晰了,公共的部分被单独划在一起,每个页面对应的相关文件被组织在一起,然后按照功能安排进行划分.这样在维护的时候就能很容易找到要修改的相关文件.同事日常开发和项目发布都是用build中的文件,里面有两套不同的文件对应开发和发布。

这样感觉整个项目都清爽多了.

项目构建之路岂止于此

因为篇幅所限很多东西还是没法一起交代清楚,比如Controller的职责划分,services的结构,以及Bower和Gulp如何配合进行完整的项目构建.这些过后可能会在GitHub上留一套架子,有兴趣的可以留言。

虽然感觉很多东西没说明白,不过关于组织结构的事儿,大概也就是这些了.只是项目的构建之路漫漫而修远,***还有点心得和大家分享一下。

项目的构建做到现在只能说完成了初级的一步,如果稍微好点说,算是中级吧.那么理所应当该有个高级或者说***目标.angular是一套框架而不是库,这就给了我们很多发挥的空间,从现在的情况来看,还有那些不足需要改进的东西,我总结了一些点,当然这些点对大多数项目可用:

各部分之间的耦合度,是否做到深度解耦。

Controller的职责是不是过大,不单单是业务,很多乱七八糟的东西都丢到Controller中,导致形成了'super controller'。

一些公共的东西是不是没有抽取出来,还在重复copy代码。

MVVC的概念,是不是发觉自己在angular中没有M的概念。

面向对象的思想看看架构和代码,有没有做到职责单一,开放闭合.

其实还有很多东西需要改进,我也一直在慢慢组织.可以说,一套搭的比较完善的架子有两个最为突出的特性.其一就是结构清晰维护方便,因为每个部分职责单一,对修改闭合,对扩这开发.另一个特性就是开发效率极高,大量的内容被抽象出来,做成公共的组件,70%的代码已经被写完了,只要写业务那部分即可。

如果说还有一个很重要的原因去让我们孜孜不倦的完善架构,就是为了不在项目日益庞大的时候无法有效的维护,个人感觉这是最主要的一点,就是通过清晰的代码和结构,降低维护的成本。

看完上述内容,你们掌握如何理解Angular项目构建中的组织结构的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网JavaScript频道,感谢各位的阅读!

--结束END--

本文标题: 如何理解Angular项目构建中的组织结构

本文链接: https://lsjlt.com/news/84996.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解Angular项目构建中的组织结构
    如何理解Angular项目构建中的组织结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前几天刚刚把项目的组织结构进行了一次重构,这是前端项目...
    99+
    2024-04-02
  • 各类Python项目的项目结构及代码组织最佳实践
    1. 了解Python项目文件组织结构非常重要 为什么要掌握pythob项目结构? 优秀的程序员都使用规范的项目代码结构,了解这些好的习惯方式,能帮助你快速读懂代码如果项目是几个人合作开发,好的代码结...
    99+
    2023-09-02
    python 开发语言 代码规范 源代码管理
  • Gradle构建基本的Web项目结构
    目录一、环境要求二、创建应用结构三、添加Gradle脚本四、编写Servlet五、添加请求页面和JSP页面六、添加gretty插件,以便于直接运行程序补充、切换Servlet容器及更...
    99+
    2024-04-02
  • Angular项目构建的方法是什么
    本篇内容介绍了“Angular项目构建的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!(1) 不...
    99+
    2024-04-02
  • vue-cli创建项目及项目结构解析
    目录1.进入一个目录,创建项目2.选择你需要的配置项2.1 选择vue版本2.2 选择选择是否使用history router2.3 选择css 预处理器2.4 选择Eslint代码...
    99+
    2024-04-02
  • python程序的组织结构详解
    目录程序的组织结构顺序结构对象的布尔值选择结构单分支结构小实验双分支结构小实验多分支结构小实验python代码的独特写法分支结构_嵌套if的使用小实验条件表达式PASS语句总结程序的...
    99+
    2024-04-02
  • 如何以新的方式构建 Golang 模块和项目结构
    哈喽!今天心血来潮给大家带来了《如何以新的方式构建 Golang 模块和项目结构》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,...
    99+
    2024-04-05
  • Java项目的目录结构详解
    一个java web项目 目录分为两个部分 ① Web应用的根目录下子目录WEB-INF,里面内容不能被客户端访问的,包括专用Web应用程序软件,包括Servlet类文件、部署描述符...
    99+
    2024-04-02
  • idea如何构建web项目
    本篇内容介绍了“idea如何构建web项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、idea构建web项目idea构建web项目的超...
    99+
    2023-07-05
  • 如何理解Java项目构建系统Apache Buildr 1.4.22
    如何理解Java项目构建系统Apache Buildr 1.4.22 ,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。与Ant相比,Buildr遵循“约定优于配置”原则,使“编译...
    99+
    2023-06-17
  • 如何搭建vue3.0项目架构
    小编给大家分享一下如何搭建vue3.0项目架构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、用 vue-cli 创建项目npm uninstall&...
    99+
    2023-06-25
  • dubbo maven如何构建根项目
    这篇文章主要讲解了“dubbo maven如何构建根项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“dubbo maven如何构建根项目”吧! 准备技能开发语言:JAVA/J2EE项目构建...
    99+
    2023-06-05
  • Angular的结构指令如何使用
    这篇文章主要介绍“Angular的结构指令如何使用”,在日常操作中,相信很多人在Angular的结构指令如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angular的...
    99+
    2024-04-02
  • PHP MVC架构项目代码组织及管理策略揭秘
    1. 文件结构 一个合理的PHP MVC架构项目文件结构可以帮助开发者轻松查找和管理项目中的文件,使项目更加井井有条。以下是一个常用的文件结构示例: ├── app │ ├── controllers │ │ ├── Hom...
    99+
    2024-02-05
    PHP MVC 代码组织 代码管理 项目结构 命名约定 版本控制
  • 如何编组忽略结构选项?
    今天编程网给大家带来了《如何编组忽略结构选项?》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起...
    99+
    2024-04-04
  • 如何使用idea构建springmvc项目
    这篇“如何使用idea构建springmvc项目”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • 如何构建webpack+es6+angular1.x项目
    这篇文章给大家分享的是有关如何构建webpack+es6+angular1.x项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。技术栈概述ES2015(ES6)大名ES2015,...
    99+
    2024-04-02
  • Laravel中如何使用数组来构建高效的数据结构?
    Laravel是一款开源的PHP框架,它的设计理念是简洁、优雅、直观。在Laravel中,使用数组来构建高效的数据结构是一种常见的做法,因为数组可以快速地存储、查询和操作数据。本文将介绍如何在Laravel中使用数组来构建高效的数据结构。 ...
    99+
    2023-10-17
    数组 laravel spring
  • Angular中如何实现树形结构视图
    这篇文章主要为大家展示了“Angular中如何实现树形结构视图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular中如何实现树形结构视图”这篇文章吧。首...
    99+
    2024-04-02
  • vue中项目结构的示例分析
    这篇文章主要为大家展示了“vue中项目结构的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中项目结构的示例分析”这篇文章吧。新建一个项目之后,我们...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作