模块化开发
为什么要使用模块化?在网页开发的早期,js制作作为一种脚本语言,做一些简单的表单验证或动画实现等,那个时候代码还是很少的。
那个时候的代码是怎么写的呢?直接将代码写在<script>标签中即可
随着ajax异步请求的出现,慢慢形成了前后端的分离
客户端需要完成的事情越来越多,代码量也是与日俱增。
为了应对代码量的剧增,我们通常会将代码组织在多个js文件中,进行维护。
但是这种维护方式,依然不能避免一些灾难性的问题。
比如全局变量同名问题:看右边的例子
另外,这种代码的编写方式对js文件的依赖顺序几乎是强制性的
但是当js文件过多,比如有几十个的时候,弄清楚它们的顺序是一件比较同时的事情。
而且即使你弄清楚顺序了,也不能避免上面出现的这种尴尬问题的发生
案例创建一个index.html,和aaa,bbb,mmm三个js文件。
此时index.html引入小明写的aaa.js和小红写的bbb.js都是能正常起作用的
这时小明再写一个mmm.js
由于这是自己写的js文件。他知道自己在aaa.js中定义了flag=true所以这样使用。我们在in ...
Vue组件化开发
什么叫组件化?所谓组件化,就是把页面拆分成多个组件,每个组件依赖的 CSS、JS、模板、图片等资源放在一起开发和维护。 因为组件是资源独立的,所以组件在系统内部可复用,组件和组件之间可以嵌套,如果项目比较复杂,可以极大简化代码量,并且对后期的需求变更和维护也更加友好。
如何进行组件化开发先看下图:
这是 vue.js 中的一个报错,原因是使用了一个未经注册的组件 lx-xxx ,这个报错告诉我们一个道理:使用自定义组件之前必须注册。那么如何注册一个组件呢? Vue.js 提供了 2 种组件的注册方式,全局注册和局部注册。
全局组件注册组件注册
组件使用
数据使用函数,保证不会多个组件共用一组数据,保证数据的独立性
组件注册注意事项data必须是一个函数
报错提示data必须是一个函数并且有返回值
组件模板内容必须是单个根元素
要求组件模板应该包含一个根元素
组件模板内容可以是模板字符串,模板字符串需要浏览器提供支持(ES6语法)
如果使用驼峰式命名组件,那么在使用组件的时候,只能在字符串模板中用驼峰的方式使用组件,但是在普通的标签模板中,必须使用短横线的方式 ...
Vue的常用特性
表单操作
v-model 会忽略所有表单元素的 value、checked、selected attribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。
v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:
text 和 textarea 元素使用 value property 和 input 事件;
checkbox 和 radio 使用 checked property 和 change 事件;
select 字段将 value 作为 prop 并将 change 作为事件。
表单域修饰符
lazy
number
使用number修饰符
trim
使用trim修饰符
自动将首尾的空格给去掉
自定义指令除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。 ...
阿里云短信业务
阿里云创建用户组和用户首先进入阿里云官网。点击右上角的登录进行登录(没有账号的进行注册登录)
搜索框搜索访问控制
进入访问控制页面
点击进入管理控制台进入到RAM访问控制页面
点击左侧菜单栏的用户组点击创建用户组创建新的用户组
按要求填写相关信息
点击添加权限添加短信业务权限
搜索框中搜索短信添加备注为管理短信服务(SMS)的权限
我们可以点击用户组名称进行查看
点击权限管理查看当前用户组所拥有的权限
接着点击左侧菜单栏用户进入页面点击创建用户创建新用户
按照提示填写相关信息。访问方式选择编程访问
若开通编程访问,请及时保存 AccessKey 信息,页面关闭后将无法再次获取信息。此时页面会显示AccessKey Secret注意保存。
访问到用户页面。点击添加用户组
选择加入到之前创建的用户组
点击查看当前用户
点击加入的组查看当前加入的用户组。可以看到我们已经成功加入之前创建的用户组了
接着点击权限管理可以看到个人权限为空,点击继承用户组的权限可以看到我们成功继承了加入的用户组的权限
到此为止我们的阿里用户组和用户已经成功创建!
阿里云开通短信服 ...
Json数据交互处理
JSONJSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。
采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式:
对象表示为键值对,数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 键值对是用来保存 JavaScript 对 ...
设计模式之单例模式
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类 只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session 对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个 SessionFactory就够,这是就会使用到单例模式。
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当您想控制实例数目,节省系统资源的时候。
如何解决:判断系 ...
UML类图详解
UML是什么?统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 UML本身是一套符号的规定,就像数学 符号和化学符号一样,这些符号用于描 述软件模型中的各个元素和他们之间的 关系,比如类、接口、实现、泛化、依 赖、组合、聚合等。画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理。
UML类图类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切地说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系
用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。依赖、泛化(继承)、实现、关联、聚合与组合。
一般关系表现 ...
如何高效的在GitHub上搜索开源项目
概述
GitHub是程序员的开源宝库,我们可以从中获取到十分优秀的开源项目。但是在众多项目中如何才能高效的找寻自己心仪的项目呢?
一般来说我们进入github官网
选择Sign in登录账户
进入到帐户主页
以搜索Spring Boot 为例
我们能看到包含178867个搜索结果
这样的搜索是十分广泛的搜索。所以我们要使用高级搜索通过参数来进行搜索
in:namein:name example仓库名字中含有“example”
我们使用in:name spring boot来搜索仓库名字中含有spring boot的项目
发现此时符合结果的只有116,951个仓库了。并且名字都是含有spring boot的
in:readmein:readme example readme中有“example”
我们使用in:readme spring来搜索readme中含有spring的项目
搜索到503,170个结果
in:descriptionin:description example描述中有“example”
我们使用in:description spring搜索描述中带有s ...
Java-IO流-10
随机存取文件流RandomAccessFileRandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。
RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件
支持只访问文件的部分内容
可以向已存在的文件后追加内容
RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。 RandomAccessFile 类对象可以自由移动记录指针:
long getFilePointer():获取文件记录指针的当前位置
void seek(long pos):将文件记录指针定位到 pos 位置
构造器
1public RandomAccessFile(File file, String mode)
1public RandomAccessFile(String name, String mode)
创建 RandomAccessFile 类实例需 ...
Java-IO流-9
处理流之六:对象流ObjectInputStream和OjbectOutputSteam
用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可 以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。
序列化:用ObjectOutputStream类保存基本类型数据或对象的机制
反序列化:用ObjectInputStream类读取基本类型数据或对象的机制
ObjectOutputStream和ObjectInputStream不能序列化static和transient修 饰的成员变量
对象的序列化对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获取了这种二进制流,就可以恢复成原来的Java对象
序列化的好处在于可将任何实现了Serializable接口的对象转化为字节数据, 使其在保存和传输时可被还原
序列化是 RMI(Remote Method Invoke – 远程方法调用)过程的参数和返回值都必须实现的机制,而 RMI 是 JavaE ...