Vuex 数据管理详解
#vuex这是vuex的工作原理图。 vue2使用vuex3,vue3使用vuex4.vuex其实是存储在store中。也就是actions,mutations,state都是在store中的。主要流程。 安装vuex12//vue2中需要使用vuex3npm i vuex@3 然后再src目录下,新建一个store目录,然后再store目录下新建一个index.js。其中写以下模板内容。1234567891011121314import 'Vue' from 'uue'import 'Vuex' from 'uuex'//再编译Vuex前必须先通过Vue使用Vuex。然后他会自动检测到Vuex的内容。并绑定到Vue的内部。Vue.use(Vuex)const actions = {}const mutations ={}const state = {}const store = new Vuex.Store({ ...
Vue 插槽:具名和作用域
具名插槽就是可以在组件中,可以定义插槽的名字 1<slot name="haha"></slot> 然后可以在调用该组件的父组件中通过<template v-slot="haha">...</template>来插入新的结构标签到组件中。 作用域插槽。他的最大特点是可以从子组件传递数据到父组件。通过:标记,和prop类似,将具体的对象发送到父组件中使用。 12345678910111213141516//子组件<slot name="haha" :games="games" :msg="msg"></slot>//父组件//这里的test是可以任意取名的。他会将子组件传递过来的所有值全部接受,然后你看也获取其中的对象<template v-slot="haha" scope ="test"><ul v-for="(game,index)...
Debian换源至阿里源解决安装报错
关于我配置我家云然后安装debian时,经常安装报错,因此在这里简单介绍一下如何给debian换源,同时推荐使用阿里源,他会比清华源更加稳定好用。 备份配置文件1cp -a /etc/apt/sources.list /etc/apt/sources.list.bak 编辑配置文件1vim /etc/apt/sources.list 具体国内源12345678deb https://mirrors.aliyun.com/debian/ bullseye main non-free contribdeb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contribdeb https://mirrors.aliyun.com/debian-security/ bullseye-security maindeb-src https://mirrors.aliyun.com/debian-security/ bullseye-security maindeb...
SSL证书配置、自动部署和Nginx集成
关于如何配置ssl证书和自动装配,并且部署到nginx的服务器上。 首先在freessl.cn部署一个ssl证书,可以是泛域名的。他只有一个月。搭配上acme就可以永久部署了。 具体步骤如下先获得ssl泛域名证书。 然后安装acme完成自动化部署。 安装使用下面这个命令: 1curl https://get.acme.sh | sh -s email=my@example.com 可以根据上面这个模板进行修改。最后就算部署完成,可以正常浏览你的网站了.安装完成后,就根据freessl给你的命令,直接复制到你的服务器执行,然后就在服务器上安装好自动更新的证书了。但是此时的证书任然没有部署到域名上,仍然需要操作 部署好后,请记住你的证书安装的地址,这个之后部署到nginx上需要使用。 nginx部署ssl证书最好的做法不是直接修改nginx.conf 文件,而是在conf.d...
Kotlin 多平台 Web 应用工具包
ktorktor是由JetBrains构建的多平台工具包,用于在kotlin中创建Web应用程序。Ktor 是一个轻松构建联网应用(web 应用、 HTTP 服务、 移动应用以及浏览器应用)的框架。 现代的联网应用需要异步化来提供最佳的用户体验,而 Kotlin 协程为此提供了极其简便的方式。
Gradle 构建项目管理工具
Android经常使用build.gradle来添加依赖和批量打包。 Gradle 简单介绍Gradle 构建由 Project 和 Task 组成,Project 保存项目的属性,例如 name,版本号,代码文件位置。Task 也是 Project 的一部分,但是它是可执行的任务,我们最常使用的 build 就是一个 Task,Task 可以依赖于另外一个 Task,一个 Task 在执行的时候,它依赖的 Task 会先执行。这样,当我们 build 的时候,这个 Task 可能依赖很多的 Task,比如代码检查、注解处理,这样一层层的依赖,最终通过 build Task 全部执行。 gradle和groovy的区别Gradle是一种自动化构建工具,与之类似的还有Maven,Ant。而Groovy是一种语言,Gradle允许使用这种语言来编写。同样kotlin也是一种语言可以用来编写Gradle,这两种语言有不同的编写格式,但是都大差不差。 DSLDSL全称:Domain Specific...
数据类、密封类和枚举类
数据类在class前面加上data前缀,将会创建一个数据类。编译器会自动的从主构造函数中根据所有声明的属性提取以下函数: equals() / hashCode()toString() 格式如 “User(name=John, age=42)”componentN() functions 对应于属性,按声明顺序排列copy() 函数 copy函数示例: 12345678910data class User(val name: String, val age: Int)fun main(args: Array<String>) { val jack = User(name = "Jack", age = 1) val olderJack = jack.copy(age = 2) println(jack) println(olderJack)} 密封类密封类用来表示受限的类继承结构。每个枚举常量只存在一个实例,而密封类...
Kotlin扩展:新增方法,修改属性
kotlin扩展扩展函数,它可以在已有类中添加新方法,而不对原类做出修改。 123fun receiverType.functionName(params){ body} 例如: 12345678910111213class User(var name:String)- receiverType:表示函数的接收者,也就是函数扩展的对象- functionName:扩展函数的名称- params:扩展函数的参数,可以为NULL/**扩展函数**/fun User.Print(){ print("用户名 $name")}fun main(arg:Array<String>){ var user = User("Runoob") user.Print()} 扩展函数是静态解析的。12345678910111213141516171819202122232425262728293031package top.zfxtopen class...
Kotlin 继承与重写
继承kotlin中所有的类都继承自Any类,他是所有类的超类。Any 默认提供了三个函数: 12345equals()hashCode()toString() 在kotlin中,父类被定义为基类。如果子类有主构造函数,那么子类在主构造函数时,就要初始化父类的属性。如果子类是使用次构造函数,那么通过super标签继承父类的构造函数,可以是父类的主构造函数,也可以是次构造函数。 12345678class Student : Person { constructor(ctx: Context) : super(ctx) { } constructor(ctx: Context, attrs: AttributeSet) : super(ctx,attrs) { }} 重写在基类中,使用fun声明函数时,此函数默认为final修饰,不能被子类重写。如果允许子类重写该函数,那么就要手动添加 open 修饰它, 子类重写方法使用 override...
Kotlin中的抽象、内部类、接口及修饰符
抽象类用abstarct来声明一个类为抽象类。嵌套类即为类内部的内部类。用inner来比奥是要给内部类。内部类有个对外部的对象的引用,所以内部类可以访问成员属性和成员函数。 123456789101112class Outer { private val bar: Int = 1 var v = "成员属性" /**嵌套内部类**/ inner class Inner { fun foo() = bar // 访问外部类成员 fun innerTest() { var o = this@Outer //获取外部类的成员变量 println("内部类可以引用外部类的成员,例如:" + o.v) } ...