LayIM.NetClient 组件开发记录】的更多相关文章

前言 好久没写博客了.前阶段看了下Hangfire组件,后来对其代码比较感兴趣,当时不太了解他如何生成的页面和一些访问请求等.后来看了下源代码,发现原来是 OWIN 在搞怪.于是乎开始深入研究Hangfire源代码,当然只是Route和Razor部分,具体他的核心业务后台执行任务我没研究.因为,我想到了之前做的LayIM的一个对接.那时候写的代码和项目耦合度太高,于是冒出一个写LayIM Owin插件的想法.直接开工吧. 开工 主要参考了Hangfire的Dashboard部分.https://…
前言 之前写了一系列的文章,是关于使用ASP.NET SignalR技术实现LayIM的功能对接,有兴趣的同学移步:http://www.cnblogs.com/panzi/p/5767095.html. 此篇会从头到尾详细介绍开发流程,和对接方法.文章会比较长,准备点小零食,细细品读吧,如果只能够跟着实践最好. 本篇文章主要讲解内容如下: 融云服务WebSDK的对接 LayIM接口的对接 如何将外网js模块化,使其符合layui标准 其他细节等 准备工作 首先,LayIM不多介绍了,想了解的同…
Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ## 设计目的 大部分项目起源都是源于业务方的需求,Element 也是一样.随着公司业务发展,内部开始衍生出很多后台系统,UED 部门也接到越来越多的设计需求,…
每天记录一点:NetCore获得配置文件 appsettings.json   用NetCore做项目如果用EF  ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如SqlSugar,NH,Dapper等,在读取连接字符串的时候,往往把信息保存到一个配置文件中,例如appsetting.json, 网上有很多关于读取appsetting.json都是通过注入的方式,  在ORM读取配置的时候,都是在一个类库里面,所以用注入的方式有时候不适合[个人理解] 因以上场景…
今天帮别人写封装几个url 请求,打成jar 包,可以以java接口的方式提供给外部访问. 遇到两个问题: 1. 是否把依赖的jar包也 打入 我要生成的jar包中,如果你不打入,别人直接调用接口会报错.如果你打入可能会和使用该jar包的项目发生冲突,因为别人可能已经引入了相关jar包. 自己可以根据要求来定: 如果不打就需要把jar和pom文件都提供给需求提出者. 如果需要可以使用maven 插件 maven-assembly-plugin. <plugin> <groupId>…
Introduction 本文组成: Ryan Clark文章Getting started with React的翻译. 博主的实践心得. React由Facebook的程序员创建,是一个非常强大的javascript类库. 一个很大的卖点是virtual DOM机制,在DOM操作的性能上有较大的优势. React社区常常介绍它为MVC架构中的"V",虽说如此,如果将React与Flux(以后将会介绍)结合,我们就可以轻松实现M与V的同步. 在本文中,将会用到博主前两天介绍的webp…
------------------------------------------------------------------好心情,会让你峰回路转. 5. 组件化开发 5.1 组件[component] 组件(Component)是自定义封装的功能.在前端开发过程中,经常出现多个网页的功能是重复的,而且很多不同的网站之间,也存在同样的功能. 而在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js来定义功能的特效,因此就产生了把一个功能相关的…
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把LayIM融入到.NET Core中做一项服务来用,就像SwaggerUI那样.只需要调用一句 app.UseLayiM() 即可实现LayIM的对接工作.当然,接口越简单,肯定背后承担了复杂的工作.之前我写过基于OWIN和融云的一个Asp.Net的组件,所以稍微有一点经验,但是对于.NET Core的…
收录待用,修改转载已取得腾讯云授权 导语 现今的前端开发都讲究模块化组件化,即把公共的交互和功能封装到一个个的组件之中,在开发整体界面的时候就能像搭积木一样快速清晰高效.在使用Vue开发我们的vhtml-ui的组件库的过程中遇到了组件嵌套组件时需要传递scopedSlot的情况,官方的文档和教程目前还没有比较明确的指引,所以摸着石头过河,调通了想要的效果.记录下来方便大家和自己. 在Vue中,为了让组件可以组合,我们使用Slot来混合父组件的内容与子组件自己的模板.这样就实现了Vue的内容分发.…
通过一个小组件,熟悉 Blazor 服务端组件开发.github 一.环境搭建 vs2019 16.4, asp.net core 3.1 新建 Blazor 应用,选择 asp.net core 3.1. 根文件夹下新增目录 Components,放置代码. 二.组件需求定义 Components 目录下新建一个接口文件(interface)当作文档,加个 using using Microsoft.AspNetCore.Components;. 先从直观的方面入手. 类似 html 标签对的…
1.前言 通过封装el-pagination组件开发自定义分页组件的类似文章网上已经有很多了,但看了一圈,总是不如意,于是决定还是自己动手搞一个. 2.背景 2.1.常规分页处理方法 利用el-pagination组件的常规做法如下: 模板部分: <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pag…
在Vue前端界面中,自定义组件很重要,也很方便,我们一般是把一些通用的界面模块进行拆分,创建自己的自定义组件,这样操作可以大大降低页面的代码量,以及提高功能模块的开发效率,本篇随笔继续介绍在Vue&Element前端项目中如何使用自定义封装的组件,实现附件的展示场景. 1.界面模块的拆分 Vue的前端界面,对界面内容部分可以根据需要进行适当的拆分,也可以把通用的部分封装为组件进行使用,如我在随笔<循序渐进VUE+Element 前端应用开发(16)--- 组织机构和角色管理模块的处理>…
前言 React Native的开发思路是通过组合各种组件来组织整个App,在大部分情况下通过组合View.Image等几个基础的组件,可以非常方便的实现各种复杂的跨平台组件,不过在需要原生功能支持.对性能有要求的情况下还是需要进行一定的原生的开发,合理的组件实现方式可以降低使用和跨平台的成本. (底层实现分析参见:React-Native 渲染实现分析,本文仅讨论组件开发方法) React Native组件开发 RN的组件开发有几种方式,JS组件.Native功能组件.NativeUI组件.J…
CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写的啊! 2.问题2-MaterialDesignToolkit 有严重的性能问题.Github上有一个文档可以缓解: https://github.com/ButchersBoy/MaterialDesignInXamlToolkit/wiki/Performance 然后,就算把帧数改低,把动画禁…
CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更新: 分别通知主窗口和RSS订阅内容栏: 主窗口负责把侧滑菜单缩回去: 内容栏里更新内容: 最终效果一般般,但是能用,不过有时候会异常,后面再来看吧:…
CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanResizeWithGrip两种都可以拖放缩放,CanResizeWithGrip右下角有网格: 2.无边框并且可缩放 如果给窗口的ResizeMode设置CanResize,那么,即使给WindowStyle设置了None,窗口照样有边框,而CozyRSS要求是无边框的. 实现无边框并且可缩放,网上也提…
CozyRSS开发记录19-窗口标题栏交互 1.谈谈对mvvm解耦的看法 在使用mvvm时,如何操作窗口,这是一个问题.这个问题的关键点是:mvvm是把view和viewmodel解耦了的,很多写法一不小心又把它们耦合起来了. 那么,view和viewmodel解耦有什么好处,不解偶又有什么坏处呢?我这里也不深入讨论了,只说一个场景:CozyRSS假使要做android版和ios版了,我的model和处理的库肯定是不用改的,那viewmodel需要改吗? 前面说到,mvvmlight是跨平台的,…
CozyRSS开发记录18-番外之Atom1.0的支持 1.对CozyRSS.Syndication批判一番 由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上.Cozy的第三顺位开发MaxTan(星爷)看了CozyRSS.Syndication的代码后,觉得来一个大改造.我们来看一下星爷的改动吧! 2.利用反射自动解析xml 首先,我把rss的xml的model定义出来了,里面每一个成员变量都是对应上xml的标签的.那么,自然可以不用写标签名了,星爷的代…
CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有html描述符了.换行比较好解决,加个限定大小,再加一个自动换行的描述就可以了: TextWrapping="Wrap"  Margin="10 12 10 10" 2.在wpf里显示html的方法 显示html,有两个方向: A.直接显示html B.将html转换成别…
CozyRSS开发记录16-RssContentView显示 1.RssContentView的布局和绑定 继续参照原型图来写xaml: 然后在RSSContentFrameViewModel里提供绑定的几个属性: 后面,这些属性会根据左侧RSSContentList里所选择的来显示. 2.RSSContentList选定项变色 为了体现当前选择项和其它项的区别,我们在xaml里来描述一下.这里处理了IsMouseOver和IsFocused两种触发器: 3.显示所选 最后,我们来控制显示的内容…
CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollection.列表项的内容换成绑定到RSSContentList_ListItemViewModel: 2.更新按钮 将RSSContentTitle里的刷新按钮,绑定到UpdateContentCommand.点击更新按钮时,获取feed内容,显示标题和内容列表: 3.实际效果 打开界面时,什么内容都没有…
CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添加按钮响应时,将文本框里的字符串作为命令参数: 响应时,如果参数是string类型,就做添加源的操作: 2.读写到文件 在FeedManageService中,我们内部调用读写文件.在第一次取时读,每次修改时写: 就这样简单的几步,源管理的界面和功能就基本都完工了,接下来我们要开始真正的把RSS的内…
CozyRSS开发记录13-添加订阅的对话框 1.设计对话框 首先,还是先用MockPlus来画个原型图: 因为用了MaterialDesignToolkit,那么可以很方便的有一个蒙层的效果. 2.实现对话框 在MaterialDesignToolkit中,Dialog是以UserControl来描述的.新建一个UserControl,内容如下: 这样,对话框的大体布局就完成了,然后是绑定一下两个按钮的命令,可以用MaterialDesignToolkit内置的: 3.调起对话框 给主界面里的…
CozyRSS开发记录12-MVVM,绑定RSS源和数据 1.引入MvvmLight MVVM最近貌似在前端那块也挺火的.据说,WPF的程序如果不用MVVM,那跟MFC和winform的,也没啥区别.用上MVVM,程序瞬间高大上.MVVM的好处和介绍,网上多得是,这里也不多说,推荐一篇比较好的文章: http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial MVVM相关的库也很多,比较有名的有:Prism.R…
CozyRSS开发记录11-够用的RSS源管理 1.分析需求 先随手画个用例图来看看有哪些参与者会访问我们的源管理: 2.搞一个Controller类 根据前面分析得出的用例图,我们就可以来设计实现一个FeedManageController类了.类提供的接口参照前面的图,实现上也先不考虑太多的异常处理和线程安全. 3.增加父子关系来处理删除 Controller类的实现也没太多好说的,不过为了处理删除,给FeedCategory和FeedNode增加了一个parent成员. 增加了parent…
CozyRSS开发记录10-RSS源管理 1.RSS源树结构 做解析体力活很多,把RSS解析的优化先放放,先玩一玩RSS源的管理. 虽然在初步的设计中,RSS源是以一个列表的方式来展示,但是,我觉得如果可以对RSS源进行分类管理,那就更好了.分类又可以分成三种情况: A.单层分组 B.一个RSS源可以属于多个分类的图 C.树状结构 随便想了想,这里就用树状结构来管理RSS源吧,跟浏览器的收藏夹管理形式类似. 对RSS源树相关的定义如下: 随便写点代码,试一下构造一颗树.这里没有考虑如何方便使用,…
CozyRSS开发记录9-快速实现一个RSS解析器 1.再读RSS标准 既然需要自己实现一个RSS解析器,那自然需要仔细的读一读RSS的标准文档.在网上随便找了两份,一份英文一份中文: http://cyber.law.harvard.edu/rss/rss.html http://wangjunle23.blog.163.com/blog/static/11783817120132220851144/ 根据文档,把解析结果的Model定义好如下: 2.xml解析随便写写 RSS用System.…
CozyRSS开发记录8-解析一份RSS 1.使用Rss20FeedFormatter解析RSS 使用Rss20FeedFormatter配合XmlReader来解析RSS非常的简单,几行搞定: 来试试效果: 貌似一切顺利,爽的一笔. 2.这是一个悲伤的故事 然而,故事总是没有这么简单.我们再试一下另一个网站的RSS. 虽然可能是因为这个网站提供的RSS不规范造成的,但是这个RSS在别的RSS阅读器都没问题啊! 看看Mono里的代码: 真是呵呵啊. 3.CozyRSS.Syndication 所…
CozyRSS开发记录7-了解RSS 1.初窥RSS 多找几个RSS源就会发现,有的源是用Atom协议提供的,有的源是RSS协议提供的.RSS协议有过几个版本,0.9.1.0和2.0等,理论上支持2.0是能向前兼容1.0的.这里我们先只考虑RSS2.0. 首先,我下载了一份最新的配色网的RSS. 之前说过,RSS是XML的子集,我们先看看这份XML的DOM结构: Channel下为RSS的主要内容,我们姑且称它为RssFeed,而每一个item是一条可读的RSS内容,我们称它为RssItem.…
CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按钮.Xaml如下: 列表项分两行,第一行包含两个图标和内容标题,第二行是时间.Xaml如下: 3.最终效果 RssContentView部分暂时先用一个WebBrowser. 列表里的图标用到了materialDesign的PackIcon,在materialDesign的demo里可以看到所有图标…