果不其然, 我的XPage的开源项目很快就被使用者提了去除ButterKnife的issue, 具体如下: 这样看来, XPage去除ButterKnife依赖是势在必行的, 于是就有了这次XPage...下面我简单列举一下: 类型安全: ViewBinding会基于布局中的View生成类型正确的属性。...空安全: ViewBinding会检测某个视图是不是只在一些配置下存在,并依据结果生成带有 @Nullable 注解的属性。所以即使在多种配置下定义的布局文件,视图绑定依然能够保证空安全。...减少控件变量的定义: ViewBinding会自动生成一个绑定类, 我们可以直接通过这个绑定对象去访问布局中的控件, 无需再为每个控件的访问去定义一个个的变量....Android应用空壳模板工程 简化版Android空壳模板工程 相关链接 史上最方便的Android页面框架XPage使用指南 Navigation和XPage框架相比谁更香 XPage项目地址:https
---- 演示项目 通过查看演示Demo的实现,可以快速高效地掌握UI组件的使用。 项目架构 项目页面主要使用XPage页面框架自动搭建,结构非常清晰。...然后,如果你context也没使用错的话,那么请查看一下当前报错设备的系统版本。因为在Android5.0(21)以下在drawable中使用?attr引用主题属性的话,也会导致R文件找不到的问题。...这里我建议使用最新版本(AndroidX版本),因为之前的版本可能存在一些兼容性的bug,并在后面的版本被逐一修复。...如果你依然想使用Support版本的话,要么你就使用1.0.5之前的版本(存在一些低版本兼容性的bug),要么你就clone一下当前最新版本的源码,将其改为Support版本本地导入依赖使用。...答:"组件"中主要包含了XUI对外提供的绝大多数组件的使用案例,"工具"中主要包含XUI对外提供辅助工具的使用案例。而"拓展"中包含的则是一些第三方常用的UI组件库使用案例,非XUI中提供的内容。
项目结构 数据库:xUtils3,这里只使用xutils3来管理sqlite数据库。...辅助语言:Kotlin,我觉得Kotlin中的很多语法很好用,很简便,比如定义实体就非常好用,在大方向使用Java的情况下,辅助使用Kotlin定义一些单独的文件,很方便。...:xpage-compiler:3.3.0' //如果是androidx项目,使用1.1.0版本及以上 implementation 'com.github.xuexiangjys.XAOP...然后在配置一些静态属性,比如要请求的Api的网址。...最后封装一些常用的工具类,就可以开发编写Activity了。 SplashActivity:初始启动页面,进行一个渐变的动画展示,然后通过xUint初始化数据库,然后跳转到登录页面。
然后呢,就前几天和小伙伴聊的时候对他们的迷茫的点,做一个总结梳理与回顾,虽然这篇应用的技术,可能90%都不会在实际项目使用了,或者说已经通过SAP的升级有了解决方案了。...20年前-15年前: XML/XSLT/JS/JQuery/J2EE等: 因为是做产品研发,当时公司是物理手段解决的资料COPY(研发电脑直接是用胶水堵住USB口),所以完全没有办法学习公司内部使用的...,类似Xpage(非XPath)这样的有专利的架构 ?...一些基于Mircosoft的技术: 语音输入技术最早是Voice97,而输出技术早就很成熟了 如下代码: ? 然后是对中文的判断: 判断是否包含汉字 ? 找出字符串中的中文 ?...因为3个点: 特殊方案对个人能力要求太高,而且不通用不好运维 SAP的新技术发布多是应用层技术,会极大的降低大家的学习成本 还有就是如果用的是SAP的升级技术,其实大家之前的代码也不会弃用,可以同步支持
然后呢,就前几天和小伙伴聊的时候对他们的迷茫的点,做一个总结梳理与回顾,虽然这篇应用的技术,可能90%都不会在实际项目使用了,或者说已经通过SAP的升级有了解决方案了。...年前: 汇编语言: 1.首先是有实验的目的:也就是课程设计和思路 2.然后是进行设计落地: 3.最后是汇编语言对设计进行机器指令识别验证: 20年前-15年前: XML/XSLT/JS/JQuery.../J2EE等: 因为是做产品研发,当时公司是物理手段解决的资料COPY(研发电脑直接是用胶水堵住USB口),所以完全没有办法学习公司内部使用的,类似Xpage(非XPath)这样的有专利的架构 可以看到已经完全过时了...源代码失效 好,回顾了之前的例程,现在总结下,从之前的学习和研发经验中,拥有了完整的从硬件到软件,从需求到设计到落地的完整工作经验(当时对研发的要求,机房IDC的布线,硬件防火墙策略,raid方案与磁盘带库,...因为3个点: 特殊方案对个人能力要求太高,而且不通用不好运维 SAP的新技术发布多是应用层技术,会极大的降低大家的学习成本 还有就是如果用的是SAP的升级技术,其实大家之前的代码也不会弃用,可以同步支持
芜湖 学习视频链接:小狂神Springboot 我们的学习历程: javase:oop mysql:持久化 html+css+js+jquery+框架:视图,框架不熟练,css不好...Springboot约定大于配置的核心思想,默认帮我们进行了很多的设置,多数的SpringBoot应用很少的Spring配置,同时集成了大量常用的第三方库配置,几乎所有的第三方库都是开箱即用。...,需要的功能元素才组合在一起,需要时间多一些,可以整合多个功能的元素。...1000ms 消息队列: 仓库冻结:资金冻结,验证,购买成功,仓库数量减少,仓库解冻,资金解冻 10 s 如何构建微服务 一个大型系统的微服务架构,就像一个复杂交织,神经网络,每一个神经元就像是一个功能元素...可以在官网直接下载,导入idea开发(官网在哪里) 直接使用idea创建一个SpringBoot项目(常用) 简单编写个controller类来看看如何运行的 package com.hyc.spring01helloworld.Controller
可结合XPage使用。...XRouter是我在仔细研读ARouter框架的源码之后,结合我使用XPage过程中遇到的问题,而进行重新改写的一个框架,一般是配合XPage使用。...配合XPage使用。 项目地址 https://github.com/xuexiangjys/XRouter ---- XOrmlite 一个方便实用的OrmLite数据库框架,支持一键集成。...项目地址 https://github.com/xuexiangjys/XTCP ---- XUtil 一个方便实用的Android工具类库 XUtil主要是我平时在开发过程中对一些实用工具类的整理。...除此之外还包括一些常用的代码混淆配置和Android Gradle脚本。
库的使用场景主要有以下几种: 全局变量:通过 `` 标签引入第三方库,注入全局变量 npm 包:通过 import foo from 'foo' 导入,符合 ES6 模块规范 UMD 库:既可以通过 `...防止命名冲突§ 暴露在最外层的 interface 或 type 会作为全局类型作用于整个项目中,我们应该尽可能的减少全局变量或全局类型的数量。...注意 module 配置可以有很多种选项,不同的选项会影响模块的导入导出模式。这里我们使用了 commonjs 这个最常用的选项,后面的教程也都默认使用的这个选项。...所以对于 npm 包或 UMD 库,如果导入此库之后会扩展全局变量,则需要使用另一种语法在声明文件中扩展全局变量的类型,那就是 declare global。...以上两种使用场景下,都是由于需要书写或需要依赖全局变量的声明文件,所以必须使用三斜线指令。在其他的一些不是必要使用三斜线指令的情况下,就都需要使用 import 来导入。
库的使用场景主要有以下几种: 全局变量:通过 标签引入第三方库,注入全局变量 npm 包:通过 import foo from 'foo' 导入,符合 ES6 模块规范 UMD 库:既可以通过...防止命名冲突 暴露在最外层的 interface 或 type 会作为全局类型作用于整个项目中,我们应该尽可能的减少全局变量或全局类型的数量。...注意 module 配置可以有很多种选项,不同的选项会影响模块的导入导出模式。这里我们使用了 commonjs 这个最常用的选项,后面的教程也都默认使用的这个选项。...所以对于 npm 包或 UMD 库,如果导入此库之后会扩展全局变量,则需要使用另一种语法在声明文件中扩展全局变量的类型,那就是 declare global。...以上两种使用场景下,都是由于需要书写或需要依赖全局变量的声明文件,所以必须使用三斜线指令。在其他的一些不是必要使用三斜线指令的情况下,就都需要使用 import 来导入。
库的使用场景主要有以下几种:全局变量:通过 标签引入第三方库,注入全局变量npm 包:通过 import foo from 'foo' 导入,符合 ES6 模块规范UMD 库:既可以通过...防止命名冲突暴露在最外层的 interface 或 type 会作为全局类型作用于整个项目中,我们应该尽可能的减少全局变量或全局类型的数量。...注意 module 配置可以有很多种选项,不同的选项会影响模块的导入导出模式。这里我们使用了 commonjs 这个最常用的选项,后面的教程也都默认使用的这个选项。...所以对于 npm 包或 UMD 库,如果导入此库之后会扩展全局变量,则需要使用另一种语法在声明文件中扩展全局变量的类型,那就是 declare global。...以上两种使用场景下,都是由于需要书写或需要依赖全局变量的声明文件,所以必须使用三斜线指令。在其他的一些不是必要使用三斜线指令的情况下,就都需要使用 import 来导入。
如果你已经使用相对导入方式导入了某个程序包,那么所有新的从该程序包的导入也将自动创建为相对导入。 ?...我们对此过程进行了改进,预计整个索引过程至少快25%。当然,如果你在多个virtualenv中使用同一程序包,我们将重用已经创建的索引。 ?...2.冻结次数减少,并改进了冻结报告 不幸的是,有时候PyCharm的UI会冻结一段时间,然后才让你重新开始处理代码。我们意识到这是非常令人不快的事情,因此我们正在努力消除这些问题。...我们对编辑器的呈现方式进行了一些更改,现在滚动浏览一个长文件变得更加平滑。 四、数据库支持 注意此功能仅专业版才有! 1.支持MongoDB 你要在MongoDB上构建应用程序吗?...通过从数据库工具窗口(视图|工具窗口|数据库)添加数据源来连接数据库。
使用: ① 导入EasyUI的资源② 查阅API文档使用EasyUI的组件完成页面开发 [2] EasyUI的常用组件 2.EasyUI的常用组件 第二节 EasyUI的组件使用 下载程序库并导入...使用: ① 导入EasyUI的资源 ② 查阅API文档使用EasyUI的组件完成页面开发 注意: 使用EasyUI,其实就是在使用别人已经封装好的代码来完成自己的页面开发。...文件:依赖的jquery文件,建议使用官方提供的jquery文件 不要自己随便更换版本,可能会造成版本不兼容。...在网页中显示表格以及树状数据 第二节 EasyUI的组件使用 下载程序库并导入EasyUI的CSS和Javascript文件到您的页面。...作用: 使用该组件可以快速完成网页的布局效果 使用:使用HTML完成页面组件,具体参照API 方式: ① 在div中进行布局 ② 在整个页面中 ③ 嵌套布局 布局区域:
因为xwiki允许你把代码放在wiki页面或者放在java,你可能会问,应该把代码放哪。下面是一些一般原则: 不要把"业务逻辑"代码放在wiki页面,应该放在Java。...一般来说,尽量少在wiki页面写一些脚本,因为这会让他们难以维护。 只有"表现层逻辑"脚本适合放在wiki页面(而不是在Java代码!),即脚本负责呈现通过Java/REST API检索到的数据。...#end 'if'判断为不存在,XWiki可以提取1 User Sheet为标题,当访问sheet页面时,这是适当的标题,而不是直接显示一些错误信息。...一个简单的代码用于后台服务处理错误: #handleRequest($success) #if ($success) #if ($request.action == 'get' || $request.xpage...$response.sendRedirect($request.xredirect) #end #else #if ($request.action == 'get' || $request.xpage
:很久以前,开发网页要通过命名空间的方式来组织代码,例如 jQuery 库将它的 API 都放在了 window.$ 下,在加载完 jQuery 后,其他模块再通过 window.$ 去使用 jQuery...这样做有很多问题,其中包括: 1、命名空间冲突,两个库可能会使用同一个名称,例如 Zepto(http://zepto.com) 也是放在 window.$ 下 2、无法合理地管理项目的依赖和版本 3.../utils’ // 导入多个导出 import * as utils from ‘utils’ // 作为命名空间导入整个模块 import utils from ‘utils’ // 导入默认值 import.../utils’ // 导入多个导出与默认导出 import { foo , bar } , * as utils from ‘utils’ // 导入命名空间整个模块与多个导出 import(’..../utils’).then (res) => { // do something} // import动态导入函数,当使用它的时候,会返回一个promise。
}()); 现在我们可以在整个模块的最外层直接使用 await,这让我们的整个模块看一来就像一个巨大的 async 函数。...为什么要引入顶层 await 下面举一个我们实际开发中可能会遇到的一个问题: 工具库模块 在一个工具库模块中,我们导出了两个函数: //------ library.js ------ export...其他应用场景 动态依赖导入 这允许在模块的运行时环境中确认依赖项,在开发/生产环境切换、国际化等场景中非常有用。...import('https://cdn-b.example.com/jQuery'); } 模块的执行顺序 JavaScript 中一个使用 await 的巨大改变是模块树执行顺序的变化。...你可能会考虑的一些问题 顶层 await 会阻断执行? 同级之间可以执行,最终不会阻断。 顶层 await 会阻断资源请求。
它使网站变得更慢,因为它不断地直接操作 DOM ,并在处理我们的代码之前加载整个库,这通常会导致延迟。...在一些简单的或普通的网站中,性能缓慢几乎不会引起注意,并且可能是为了更多功能所做的折衷,但是在每一毫秒都很重要的大型复杂网站中,jQuery 一般会降低此类网站的性能。...相对易用性 - jQuery 的一个缺点是很容易写出面条代码。由于对 jQuery 的选择链使用不当,使用非描述性变量名并尝试编写复杂函数时,jQuery 可能会导致写出最终无法维护的代码。...: npm install jquery 或者 yarn add jquery 并像这样导入: import * as jQuery from 'jquery'; 或者在项目中使用 CDN版本: Google...技能需求率低也表明用更新的库或框架可能会更好,因为有更多的就业机会。 我建议学习 jQuery 以及在项目中用它实现一些基本的功能(技多不压身)。文档能够帮你很快入门。
随着JavaScript 的发展,一些库不可避免地落后了,无法跟上开发者社区对最新特性、范式和性能的期望。 是时候做出一些艰难的决定,告别不再像以前那样满足我们需求的某些库了。...此外,现代浏览器已经标准化,使得像jQuery这样的跨浏览器解决方案的需求变得多余。更不用说,如今将jQuery捆绑到应用程序中可能会增加不必要的膨胀,在速度至上的时代减慢了加载时间。...两者都提供模块化导入,这意味着您可以只使用所需的内容,从而大大减小包的大小。...该库也很大,导入单个函数通常会将大量额外开销引入您的项目。 考虑通过使用ES6+等效项替换其函数来去除Lodash。...5 个旧库的 JavaScript 替代方案 随着上面提到的库即将淘汰,让我们来看看一些现代的替代方案,它们可以简化您的开发流程,并保持您的应用程序的性能和最新状态。 1.
lib下存放一些常用的库,和我们最关键的require.js script下存放我们自己写的一些js。 index.html代码 jquery的语法,所以就必须加载jquery这个依赖。...好了,下篇我们接着讲require的全局配置和非amd规范的模块导入。 延生(全局配置):所谓全局配置,就是配置只需要设置一次,我们这篇的入口文件是main.js。...难道我们要把整个项目的js都写在main.js中吗?如果不,那我们每个页面都要重新写一个main.js来配置require吗?...延生(非amd规范): 非amd规范的模块就是不是使用define来定义的模块,和没有主动return返回你需要的函数这种类型的js。
前言 Web前端的组件技术刷新真的是日新月异,前段时间看到很多童鞋分享了webpack的使用,刚好之前做我们游戏里Web版的GM工具的时候正在想怎么用简单的方式,做模块分离并且又不需要引入重量级的第三方库或组件...首先也是安装基础库的支持库。...我用的是运行时编译的版本,而 vue 对 webpack 文档里支持方式是只导入了runtime,没有导入编译库,所以这里初始化流程会麻烦一些。...,像上面的这些库是需要写入全局命名空间的,所以还需要初始化的时候导入一下: { plugins: [ new webpack.ProvidePlugin({ moment: "moment...然后由于 monaco-editor 依赖 typescript 就顺便把 typescript 也导入进来了。