zoukankan      html  css  js  c++  java
  • Atitit 依赖管理之道 1. 概念 依赖管理,是指在什么地方以什么形式引入外部代码。 1 1.1.1. 理解模块化和依赖管理: 1 1.2. 依赖管理,有三个层面。 单一职责原则,协议对象引用,

    Atitit  依赖管理之道

    1. 概念 依赖管理,是指在什么地方以什么形式引入外部代码。 1

    1.1.1. 理解模块化和依赖管理: 1

    1.2. 依赖管理,有三个层面。 单一职责原则,协议对象引用,依赖逻辑关系 2

    2. 五大数据解耦 视图、数据模型、网络请求、本地存储、页面跳转五块代码 2

    3. Maven 2

    4. Maven最佳实践:管理依赖 1 3

    4.1. 最简单的依赖 2 4

    4.2. 依赖归类 2 4

    4.3. 依赖范围(scope) 3 4

    4.4. 分类器(classifer 5 4

    4.5. 依赖管理(dependencyManagement 6 4

    5. 与其他工具的区别 4

    5.1. RubygemNodenpmPythonpipiOSCocoaPods都类似,只是配置文件语法和坐标命名规则有些差异。 4

    5.2. App store 4

    6. 依赖管理工具,设计 4

    7. 组合层次 funjobj,pkg,namespae,modu 5

    8. 参考资料 5

    1. 概念 依赖管理,是指在什么地方以什么形式引入外部代码。

     

    依赖管理为什么重要呢? 因为,依赖在哪里,处理代码就会那里,而bug也就会出现在那里。 于是,反过来,为了让bug集中,就需要让处理代码集中,也就需要管理好代码的依赖关系。

    1.1.1. 理解模块化和依赖管理:

    · 应用一般都会依赖外部库(jQuery和AngularJs),这些库应该使用包管理器处理和更新,而不是手动下载。

    · 应用本身也可以分解成为多个相互交互的小部分,学习封装代码的技能,把代码视作自成一体的组件,学习如何设计优秀的接口,如何安排接口;学习如何隐藏数据,只开放用户需要的部分。

    · 如何解析依赖,避免手动维护一组有序的script标签。

     

    1.1. 依赖管理,有三个层面。 单一职责原则,协议对象引用,依赖逻辑关系

    1、相同的代码,只出现在一个地方,也叫单一职责原则。

    2、通过引用协议对象,让依赖关系中的组件更容易更换。

    3、从逻辑上安排依赖关系,让依赖关系更容易被人理解。

    单一职责原则,是最基本的原则。它是代码模块化,设计模式的根本。

    协议对象引用,使得功能变更时,只需要在一个统一的地方做最少的修改。

    依赖逻辑关系,则主要是为了更方便人脑去理解代码之间的关系。

     

    2. 五大数据解耦 视图、数据模型、网络请求、本地存储、页面跳转五块代码

    3. Maven

    Atitit maven使用总结attilax总结.docx

    atitit 项目管理  package 模块管理 maven attilax总结.docx

    Maven诞生于2004年(来源维基),查询了下,应该是各语言的依赖管理工具中早的。Ruby的gem也是2004年出现的,但gem离完备的依赖管理工具还差些,直到Ruby的bundler出现。Python的pip出现的更晚。

    Maven的习惯是通过 groupID(一般是组织的域名倒写,遵循Java package的命名习惯)+ artifactId(库本身的名称) + version(版本)来定义坐标,通过xml来做配置文件,提供了中心仓库(repo.maven.org)以及本地工具(mvn)。

    依赖定义:  <dependency>  <groupId>com.google.guava</groupId>  <artifactId>guava</artifactId>  <version>18.0</version>  </dependency>  repo定义:  <repository>  <id>repo.default</id>  <name>Internal Release Repository</name>  <url>http://repo.xxxxxx.com/nexus/content/repositories/releases</url>  <releases>  <enabled>true</enabled>  <updatePolicy>interval:60</updatePolicy>  <checksumPolicy>warn</checksumPolicy>  </releases>  <snapshots>  <enabled>false</enabled>  <updatePolicy>always</updatePolicy>  <checksumPolicy>warn</checksumPolicy>  </snapshots>  </repository> 

    同时,为了避免依赖冲突的问题,Maven的依赖配置提供了exclude配置机制,用于阻断部分库的传递依赖。

    4. Maven最佳实践:管理依赖 1

    Maven最佳实践:管理依赖 1

    4.1. 最简单的依赖 2

    4.2. 依赖归类 2

    4.3. 依赖范围(scope) 3

    4.4. 分类器(classifer 5

    4.5. 依赖管理(dependencyManagement 6

    5. 与其他工具的区别

    5.1. RubygemNodenpmPythonpipiOSCocoaPods都类似,只是配置文件语法和坐标命名规则有些差异。

    5.2. App store

    6. 依赖管理工具,设计

    1.要有一种依赖库的命名规则,或者叫坐标(Coordinates)的定义规则,可以通过坐标准确找到依赖的库。

    2.要有对应的配置文件规则,来描述和定义依赖。

    3.要有中心仓库保存这些依赖库,以及依赖库的元数据(metadata),供使用方拉取。

    4.还需要一个本地工具去解析这个配置文件,实现依赖的拉取。

    以上其实就是各依赖管理工具的核心要素。

     

    7. 组合层次 funjobj,pkg,namespae,modu

    function用于组合代码块逻辑,有了object用于组合一组方法,有了packagenamespace用于组合一组相关对象,但其实还需要有更高一个层次的组合定义 —– module,或者叫子项目

    8. 参考资料

    漫谈依赖管理工具:从Maven,GradleGo_TechWeb.mhtml

    漫谈依赖管理工具:从Maven,GradleGo_TechWeb.mhtml

    Maven最佳实践:管理依赖 - 飞龙在天001 - 博客园.mhtml

  • 相关阅读:
    maven 执行mvn package/clean命令出错
    IDEA
    贝叶斯
    python基础之python基本数据类型
    python基础(一)python数据类型,条件,循环
    ...
    读取70开头的xml,gbk转成utf-8
    CSS实现多个Div等高,类似表格布局
    JBOSS 5 session时间配置
    padding
  • 原文地址:https://www.cnblogs.com/attilax/p/15197773.html
Copyright © 2011-2022 走看看