首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我问导师,Vue3有没有对应工具来生成漂亮的文档? Vitepress

首页 专栏 javascript 文章详情 3 我问导师,Vue3有没有对应工具来生成漂亮的文档? Vitepress ?...最近有人在问:小智, Vue3 有没有对应制作文档的工具。于是,我去查了一些资料,发现,Vue3和新的Vite构建工具为我们提供了另一种快速开发静态站点的方法,那就是 Vitepress。...Vitepress是在Vite之上构建的Vue驱动的静态站点生成器。 Vitepress 被称为“ Vuepress的小弟弟”,它比同类产品具有一些优势。...虽然不打算完全取代Vuepress作为 Vue 的静态网站生成器,但 Vitepress 提供了一种轻量级的替代方案。...Vitepress通过三个虚线(---)包围它来声明该块。 // docs/contact --- title: Contact --- # Contact ?

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

结合静态代码扫描来给插件间接口把把脉

我们先认识下手管的插件间接口定义,在手管插件化框架中,各插件相互平行,插件间接口调用即插件数据传递通过框架封装的统一接口进行通信,由框架进行底层的数据封装和传递,具体实现为各插件间维护一份插件对外的插件间接口配置,编译时在框架生成对应的插件常量...[GXnNV6B.png] 插件间接口变更统计 每次编译前框架都会解析接口配置xml生成统一的插件接口常量表,那插件的变化情况我们可以从这里入手,从每次编译生成常量定义中来找到各版本插件接口的变更情况...目前已有的插件间接口例覆盖程度有多少呢?...7UH7jbV.png] 经过这么多版本的迭代相信应该有不少多余的水分,插件内的代码各FT通常会清理的比较及时也有一些现成的工具做冗余代码清理,但对外的接口大多担心外部兼容性及依赖问题通常清理不及时,有没有什么好的办法来梳理下...前面说到,手管编译前编译脚本会根据插件配置在框架生成相应的插件及接口常量类: [bqhNzsc.png] 因此插件接口我们可以重写visitClassDeclaration(ClassDeclarationnode

1.2K60

Android中可以作为Log开关的一些操作及安全性详解

那么有没有一种办法实现自动化管理呢?答案当然是有的,使用 BuildConfig 类。...BuildConfig 类似 R 资源文件,BuildConfig 也是在编译阶段,Gradle 插件自动生成的一个 class 文件。该文件包含一些帮助开发人员辨别当前 build 类型的常量信息。...那么,有没有办法修改 Library Module 的默认构建方式呢?答案也是肯定的。...但是,有没有想过,如果 apk 被反编译的话,这些 Log 相关的代码还是能够别识别出来,别人只需要稍作修改,重新打包,依旧能够使 Log 重现。...所以,最好的办法就是,Release 包中不包含任何用于调试的 Log 代码(如果使用 LogUtils 的话,也包括 该类的调用)。

2K20

这种讲解equals和==区别的方式,全网第一!

开始学习Java的总是被equals、==混淆,即使看了相关的技术贴子,过一段时间也很容易忘记,那么有没有一种办法使得还在“淤泥”中挣扎中的攻城狮们过目不忘呢?...它们的区别可以下图来形象的解释: ? 暂且不管方法区。单看堆和栈。...TestClass testClass = new TestClass();,当我们创建对象TestClass()时候,就会调用TestClass的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用...==指引用是否相同, equals()指的是值是否相同 一张具有生命力的图直观表示一下他们之间的关系: ?...abcd" ); //b为另一个引用,a跟b的对象内容是一致的 String b = new String("abcd"); //把“abcd"放在常量池中 String c = "abcd"; //从常量池中查找

47420

字符串常量池深入解析

它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是双引号声明的String对象,可以使用String提供的intern方法。...String对象(“11”)的字符串(equals(oject)方法确定),因为在常量池中没有,将 s3中的“11”字符串放入 String 常量池中 ,在常量池中生成一个 “11” 的对象 ;关键点是...”字符串 public void test7(){ //发现原来是在JVM启动的时候调用了一些方法,在常量池中已经生成了"java"字符串常量, String...”ja”和”va”对象,在堆里面存储的是”java”对象,String s3 = s2.intern();在字符串常量池中寻找有没有“java”对象,由于JVM的 特殊性在JVM启动的时候调用了一些方法...,在常量池中已经生成了“java”字符串常量,所以s3直接返回字符串常量池中已经存在的“java”,s4也是同样的道理,所以结果就非常的明显了 参考的部分文章 深入解析String#intern(

39030

JS 这次真的可以禁止常量修改了!🥊

本文简介 ES6 推出的 const 可以定义常量。在 JS 中,常量是不可改变的。这个 “不可改变” 指的是常量存放的内存地址不变。...但我们还是有办法常量变成真正的 “常量”。 “可变” 的常量 内存分为 栈内存(stack) 和 堆内存(heap)。 JS 的基础类型数据存在 栈内存 里;引用类型数据存在 堆内存 里。...所以 const 创建一个对象常量时,只要不改变 引用地址 就不会报错。...举个例子 const obj = { name: '雷猴' } obj.name = '鲨鱼辣椒' console.log(obj) // 输出: {name: '鲨鱼辣椒'} 复制代码 有没有觉得上面的代码看上去并不那么...如果要冻结深层次对象,可以递归来操作。

2.5K40

Java字符串最详解析

大概是这样的: 会分配一个11长度的char数组,并在常量池分配一个由这个char数组组成的字符串,然后由m去引用这个字符串。 n去引用常量池里边的字符串,所以和n引用的是同一个对象。...生成一个新的字符串,但内部的字符数组引用着m内部的字符数组。 同样会生成一个新的字符串,但内部的字符数组引用常量池里边的字符串内部的字符数组,意思是和u是同样的字符数组。...常量池中字符串的产生 常量池中的字符串通常是通过字面量的方式产生的,就像上述m语句那样。 并且他们是在编译的时候就准备好了,类加载的时候,顺便就在常量生成。...大家不知有没有发现,上面的图中,u和v的字符数组没有被常量池里边的字符串引用到。...关于这个问题,常见的解决办法就是使用new String(String original)或java.io.StreamTokenizer类。

27510

如何安全地打印日志

(if条件不成立)所以,有没有办法让这些代码执行到呢?简单来说,就是能不能在release版本里面把这个DEBUG变量弄成true呢?当然可以!而且做法还非常简单。...代码很简单,一些正则表达式就可以做到。...看起来简单,好像也与最初的“日志开关”没有什么区别,仔细分析一下: 日志开关必须是静态常量 对比一下正确的做法与最开始的日志开关,一个是一个静态变量,一个是静态常量;如果是常量的话,那么就是永远不变的,...实际上,要少写几行代码,我们可以选择复用(代码级别,比如上面的日志类),也可以选择生成(直接生成代码);在支持元编程的语言里面,生成代码是很常见的事情,比如C++的模版元编程以及ruby吹嘘的DSL能力...;这里没有那么高大上,代码生成代码,我们直接借助编辑器帮助我们少写几行代码万事。

1.3K30

String类相关面试题很难?不要方,问题不大前言:一、字符串的创建:二、字符串的拼接:三、intern方法:总结:

因为它可以直接赋值,也可以new一下构造器生成对象,还可以加号拼接……这些不同的方式到底有什么区别?本文是个人学习的一些总结,也希望能用最通俗的语言让大家明白这个类。...字面量赋值创建: String str1 = "hello"; String str2 = "hello"; String str3 = "world"; 这样创建字符串,首先会去常量池里找有没有这个字符串...首先在堆中生成了该字符串对象,然后去看常量池中有没有该字符串,如果有就不管了,没有就往常量池中添加一个。图解: ?...小结:这两种方式创建出来的,一个在堆中,一个在常量池中,所以它们之间 == 比较肯定是false。 二、字符串的拼接: 字符串可以直接加号进行拼接,但是也有几种不同的情况。 1....图解 首先new String("str")会在堆中创建str,同时添加到常量池;new String("01")也是一样的,在堆中创建01,同时添加到常量池;然后两者拼接,底层的append方法,在堆中生成一个

75450

什么是插入式注解,一文读懂!

问题 需求似乎很简单,但真要获取自身的jar版本号还是挺麻烦的,有个比较简单但阴间的办法,就是给每一个组件都加上当前的jar版本号,写到配置文件里或者直接设置成常量,这样上报promethus时就可以直接获取到...有没有更好的解决办法呢?比如我们可不可以在gradle打包构建时拿到jar包的版本号,然后注入到每个组件中去呢?...比如我们可以给每个组件定义一个空常量,加上自定义的注解: @TrisceliVersion public static final String version = ""; 然后像lombok生成set...jar包版本号,语法树变了,最终生成的字节码也会跟着变,这样就实现了我们想在编译期给常量version注入值的愿望。...引入刚才写好的代码包: 这是Test类: 现在我们只需要让gradle build一下,新得到的字节码中该字段就有值了: 这只是插入式注解处理器功能的冰山一角,既然它可以通过修改抽象语法树来控制生成的字节码

26320

stringbuffer和stringbuilder是什么_Java编程

String有没有线程安全问题 总结 字符串常量池 什么是字符串常量池?...StringBuilder的区别 String在java编程中广泛应用,首先从源码进行分析 String底层是一个final类型的字符数组,所以String的值是不可变的,每次对String的操作都会生成新的...这时,首先查找字符串常量池,发现abc这个对象已经有了,这是就直接将这个对象的引用返回给b,此时a和b就共用了一个对象abc,不过不用担心,a改变了字符串不会影响b,因为字符串都是常量,一旦创建就没办法修改了...= s2"); } } 执行结果: s1 == s2 分析: 通过对字符串常量池的了解,我们知道s1和s2都是指向字符串常量池中的同一个对象,所以内存地址是一样的,所以==可以判断两个字符串是否相等...如果要操作少量的数据 String; 多线程操作字符串常量池下操作大量数据 StringBuffer; 单线程操作字符串常量池下操作大量数据 StringBuilder。

24740

字符串常量池,看这篇就够了(三)

写不写常量池 一般我们Java代码创建字符串,常用方式有三 String s1 = "ziya"; String s2 = new String("ziya"); String s3 = "zi"...如果你的Java代码编译生成的字节码指令中有【ldc】,就会写入常量池,否则就不会。细节上篇文章已经讲了,不赘述。...StringTable中去找有没有这个字符串,如果有,直接返回,如果没有,往下走 2、第16行代码,基于字符串内容创建Java的String对象。...看到这里你应该清楚这背后的原因及如何解决了吧 背后的原因是大概率你的代码中的字符串都是拼接生成的,不会写入常量池,所以每次都是不断的创建,消耗内存空间 解决办法就是在拼接字符串的代码后面手动调用intern...完整学完你就可以:1、Java写一个Java虚拟机,从而深入理解运行系统的底层细节;2、有能力自行研究Hotspot源码及其他用C语言、C++写的中间件源码;3、能够用C语言、C++写任何你感兴趣的基础算法如

61240

Java漫谈9

我们先来看看new这个关键字,它的生成过程是什么样的: String str1 = new String("hello"); 首先,系统会先在常量池中寻找有没有“hello”,如果没有的话,就先在常量池中创建...其次再来看看直接赋值的方式,流程是怎么样的: String str2 = "hello"; 系统会先在常量池中寻找有没有“hello”对象,如果有的话就直接使用,没有的话就在常量池中新建一个,也叫入池。...如此一来,如果下次还有String的对象也直接赋值的方式定义为“hello”,既不需要再次在常量池中创建,又不需要在堆栈中创建,直接指向这个堆栈中的“hello”对象即可。...因为str1对对象的引用是的是对象在堆内存中的地址,如果能把这个引用的地址变为“hello”对象在常量池中的对象,这样双等号判断的时候就会为true了。...清单 总的来说,直接赋值的方式效率比较高。 new的方式创建String对象后,可以intern()方法将其放入常量池中。

59790

第九章 Android Gradle高级自定义

第一个参数type是要生成字段的类型,第二个参数name是要生成字段的常量名字,第三个参数value是要生成字段的常量值。...看上面的示例代码,我们定义两baidu和google两个渠道,并分别为他们生成了相应的BuildConfig常量字段,看我们的BuildConfig类,已经生成了这个常量了。...然后我们在代码中使用这个WEB_URL常量即可,在打包的时候,Android Gradle会帮我们自动生成不同的值。...到了这里,我们对65535的限制都解决完了,这时我们打包的时候,Android Gradle会自动判断你的方法有没有超过65535个,如果没有,还是生成一个classes.dex文件,如果超过了,那么就会生成...我们要新建一个xml文件来配置,这个文件是 res/raw/keep.xml,然后通过tools:keep属性来配置,这个tools:keep接受一个以逗号(,)分割的配置资源列表,并且支持星号(*)通配符,有没有觉得它和我们

1.5K10
领券