让一个 csproj 项目指定多个开发框架
可移植类库、共享项目、.NETStandard项目都能够帮我们完成跨多个.NETSDK的单一项目开发,但它们的跨SDK开发都有些限制。现在,我们又有新的方式能够跨多个.NETSDK开发了,这就是使用新的csproj文件格式。看看拥有多个开发框架的项目长什么样吧!▲多SDK项目是不是很激动?新csproj文件在如何组织一个同时面向UWP/WPF/.NetCore控制台的C#项目解决方案-walterlv一文中我讲了.NETStandard的方式,这种方式优势非常明显,跟普通的开发方式一样,也是我最推荐的方式。但缺点是要求目标SDK支持对应的.NETStandard版本。使用共享项目的方式则是直接共享了源码,只要在目标项目中指定了条件编译符,那么源码便能针对各种不同的目标框架进行分别编译。但缺点是对扩展插件的支持较差(可能是因为扩展插件难以判断项目的真实开发框架),而且VisualStudio本身对它的支持也有BUG(例如切换编写文件所属的项目经常会
Asp.net Mvc 与 Web Api生命周期对比
完整的生命周期比较复杂,对细节感兴趣的同学可购买老A的图书学习:传送门本文只简单讲述路由注册、controller创建、action选择的3个主逻辑线,其他的内容大家可自己阅读相应的代码先上二者单独的生命周期介绍文档:mvc生命周期,webapi生命周期以下内容以vs创建的默认mvc、webapi项目为准分析,不足之处,敬请体谅Mvc
C# 这些年来受欢迎的特性
原文地址:http://www.dotnetcurry.com/csharp/1411/csharp-favorite-features在写这篇文章的时候,C#已经有了17年的历史了,可以肯定地说它并没有去任何地方。C#语言团队不断致力于开发新特性,改善开发人员的体验。在这篇文章中,我在介绍C#历史版本的同时分享我最喜欢的特性,在强调实用性的同时展示其优点。C#1.0C#1.0(ISO-1)确实算是语言,却没有什么令人兴奋的,缺少许多开发人员喜欢的特性。仔细一想,我能说得出喜欢的只有一个特别的特性-隐式和显式接口实现。接口在现今开发C#的过程中仍然流行使用,以下面的IDateProvider接口为例。publicinterfaceIDateProvider{DateTimeGetDate();}没有什么特别的,现在着手两种实现方式-其中第一种是隐式实现,如下:publicclassDefaultDateProvider:IDateProvider{publicDateTime
Prepack v0.2.19 发布,JavaScript 代码优化工具
Prepack是一个优化JavaScript源代码的工具。它是一个JavaScript的部分求值器(PartialEvaluator),可在编译时执行原本在运行时的计算过程,并通过重写JavaScript代码来提高其执行效率。Prepack用简单的赋值序列来等效替换JavaScript代码包中的全局代码,从而消除了中间计算过程以及对象分配的操作。对于重初始化的代码,Prepack可以有效缓存JavaScript解析的结果,优化效果最佳。Prepackv0.2.19更新内容:支持ES2015class各种bug修复
ESLint 4.16.0 发布,JavaScript 检验工具
ESLint是一个开源的JavaScript检验工具,相比JSLint,ESLint具有可配置性。其它跟JSLint的不同之处:ESLint使用Esprima来进行javascript解析ESLint使用AST来修改代码模式ESLint是完全插件化的,每个规则都是一个插件,用户可以在运行时增加更多的插件ESLint4.16.0更新内容:e26a25fUpdate:allowcontinueinsteadofifwrapinguard-for-in(fixes#7567)(#9796)af043ebUpdate:AddNewExpressionsupporttocomma-style(#95
ChakraCore 1.8.0 发布,微软 Edge 浏览器 JS 引擎
ChakraCore是微软开源的MicrosoftEdge浏览器ChakraJavaScript引擎的核心部分,主要用于MicrosoftEdge和Windows中HTML/CSS/JavaScript编写的应用。ChakraCore1.8.0包含一些JavaScript和WebAssembly相关的功能更新和性能改进,部分亮点如下:#3855不再支持VS2013正则表达式性能改进Object.assign、Object.create、Object.hasOwnProperty性能改进新增对Arm64的支持#3594优化字节码大小#3681新增对asm.js/wasm的inlining支持#3931新增JSRTAPIJsLessThan#4077优化JSON.stringify和JSON.parse更多内容可查阅更新日志。
前端特效03:HTML5画布模拟生成3D的舰队飞行效果
今天开始~小编将与大家分享一系列的web前端特效荟萃,喜欢把玩儿炫酷效果的小伙伴快快看过来^_^,希望大家喜欢呦~第三期,给大家分享一个HTML5画布模拟生成3D的舰队飞行效果,这个代码将使用2D的绘制来模拟3D的飞行效果,使用3D坐标转换2D坐标,并且定时清除图形并且绘制非常图片生成最后效果。相关代码如下:
autocomplete light配置xadmin使用时一记小坑
昨天又有一个同学反馈,跟着视频写代码,一样的代码,但是为啥我这的autocompletelight就不生效。第一个同学反馈我以为是autocompletelight的版本问题,再次有人反馈,那可能是哪不太对劲。说句题外话,默认情况下的djangoadmin或者是xadmin,在外键字段的渲染上都是一个坑。当外键的数量过大,那页面的加载速度真是“杠杠滴”。出错现象先说下版本:xadmin-0.6.1autocompletelight-3.2.10错误提示:UncaughtError:Option'ajax'isnotallowedforSelect2whenattachedtoa
vue出坑之路第一轮
vue出坑之路第一轮上线打包,需要修改哪些配置文件layui如何与vue结合使用vue统一管理接口以及跨域随着项目越来越大,接口越来越多,甚至是上百上千个接口,统一接口是非常有必要的,下面是方法:在vue项目中,config中的index.js,dev下面加一个proxyTable,proxyTable是解决跨域问题,pathRewrite是统一接口。proxyTable:{'/api':{target:'http://www.****.com',//设置你调用的接口域名和端口号别忘了加httpchangeOrigin:true,pathRewrite:{'^/api':'/'}}}在项目里就是这样用,就可以了。tab:function(data){this.$ajax.get('/api/orderGoods/mainPage',data).then((res)=>{this.tablist=res.data.c
[vue插件]基于vue2.x的电商图片放大镜插件
最近在撸一个电商网站,有一个需求是要像淘宝商品详情页那样,鼠标放在主图上,显示图片放大镜效果,找了一下貌似没有什么合适的vue插件,于是自己撸了一个,分享一下。小白第一次分享,各位大神莫见笑。vue-piczoompicturemagnifiercomponentforVue.js2.x基于vue2.x的电商图片放大镜插件GIF动画截图BuildSetup使用步骤#安装installnpminstallvue-piczoom--save#使用use--scriptimportPicZoomfrom'vue-piczoom'exportdefault{name:'App',components:{PicZoom}}--html<pic-zoomurl="static/imac2.jpg":scale="3"></pic-zoom>Config配置propsdescribedefaulturl图片地
JavaScript:(a==1 && a==2 && a==3)能输出ture么?
如果你能确切的答出可以,那恭喜你,你可以绕道了前言有人会说,这个问题好奇葩,放在别的语言里,这要是能输出true,估计是见鬼了,但是你别说,放在js中好真有可能。最近在一个人的推特上提了一个问题:问题:Can(a==1&&a==2&&a==3)everevaluatetotrue?答案:yes在这篇文章中,我将解释这段代码的原理:consta={num:0,valueOf:function(){returnthis.num+=1}};constequality=(a==1&&a==2&&a==3);console.log(equality);//true你可以打开chorme浏览器,然后打开开发者模式,在console中输入这段代码,你就可以看到输出结果([windows]:Ctrl+Shift+J[mac]:Cmd+Opt+J)有什么窍门呢?其实也没有,能有的就是js中的两个概念:隐式转换object的valueOf函数隐式转换注意:这题里面我们
vue + vuex + koa2开发环境搭建及示例开发
写在前面这篇文章的主要目的是学会使用koa框架搭建web服务,从而提供一些后端接口,供前端调用。搭建这个环境的目的是:前端工程师在跟后台工程师商定了接口但还未联调之前,涉及到向后端请求数据的功能能够走前端工程师自己搭建的http路径,而不是直接在前端写几个死数据。即,模拟后端接口。当然在这整个过程(搭建环境+开发示例demo)中,涉及到以下几点知识点。包括:koa2的知识点node的知识点跨域问题fetch的使用promise的涉及vuex->state、mutations、actions的使用第一部分:环境搭建vue+vuex环境首先是vue+vue-router+vuex的环境。我们用vue-cli脚手架生成项目,会用vue的同学对这块应该很熟了。//全局安装脚手架工具npmivue-vli-g//验证脚手架工具安装成功与否vue--version//构建项目vueinitwebpack项目名//测试vue项目是否运行成功npmrundev因为脚
Vue过渡与动画
通过Vue.js的过渡系统,可以在元素从DOM中插入或移除时自动应用过渡效果。Vue.js会在适当的时机为你触发CSS过渡或动画,你也可以提供相应的JavaScript钩子函数在过渡过程中执行自定义的DOM操作。为了应用过渡效果,需要在目标元素上使用transition特性:<divv-if="show"transition="my-transition"></div>transition特性可以与下面资源一起用:v-ifv-showv-for(只在插入和删除时触发,使用vue-animated-list插件)动态组件在组件的根节点上,并且被Vue实例DOM方法(如vm.$appendTo(el))触发。当插入或删除带有过渡的元素时,Vue将:尝试以ID"my-transition"查找JavaScript过渡钩子对象——通过Vue.transition(id,hooks)或transitions选项注册。如果找到了,将在过渡的
单线程js模拟多线程--使用Concurrent.Thread.js库
在进行任何操作之前,先运行如下程序,这是一个很简单的功能实现:
C#初学者们,请离代码生成器远点!!!
在程序开发的世界里,各路前辈们为了提高所谓的编码速度,搞出了各式各样的代码生成器,来避免所谓的重复的人为机械地粘贴和复制代码,以此来提高生产力。早几年前,我可能会认为这样的做法真得有用,特别是在编码速度上。是的,有时候代码生成器是可以帮助我们开发者生成模板化的,规范化的,大批量的机器代码。但许多人就将它当做了程序开发的利器,没有代码生成器完全没法写代码了,也没办法工作了。觉得自己会用几款代码生成器好像很牛的样子。得意的在老板们,或是不懂技术的技术经理们面前炫耀:“XXX们,你看我的工作效率多高,你们的需求,你们想要的功能我只需要简单的代码生成就可以快速地搞定。”。这种做法就好比别人把一头宰好并切好的牛肉放到你面前,再问你:“把这些牛肉放进冰箱需要几步?”答案你也许知道了吧?没错,三步。1.打开冰箱门;2.放牛肉进冰箱;3.关上冰箱门很简单是吧?那么,如果别人给你的是一整头牛,而不是切好的牛肉,再问让你把这头牛放进冰箱,你又怎么办呢?上面的这个案例其实与开发者(特别是初级开发者)使用代码生成器有着同样的道理。使用代码生成
laravel5.3 vue 实现收藏夹功能
{"private":true,"scripts":{"prod":"gulp--production","dev":"gulpwatch"},"devDependencies":{"bootstrap-sass":"^3.3.7","gulp":"^3.9.1","jquery":"^3.1.0","laravel-elixir":"^6.0.0-14","laravel-elixir-vue-2":"^0.2.0","laravel-elixir-webpack-official":"^1.0.2","lodash":"^4.16.2","vue":"^2.0.1","vue-resource":"^1.0.3"}}1.0.2修改gulpfile.js将原来的require('laravel-elixir-vue');修改为require('laravel-elixir-vue-2');constelixir=require('laravel-elixir');requi
我知道的跨域与安全
首发于极乐科技写文章登录我知道的跨域与安全李银城5hoursago关于跨域,有两个误区:1.✕动态请求就会有跨域的问题✔跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/java等其它环境2.✕跨域就是请求发不出去了✔跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。如下图所示:这三个源分别由于域名、协议和端口号不一致,导致会受到同源策略的限制。同源策略具体限制些什么呢?1.不能向工作在不同源的的服务请求数据(clienttoserver)这里有个问题之前也困扰了我很久,就是为什么http://home.com加载的http://cdn.home.com/index.js可以向http://home.com发请求而不会跨域呢?其实http://home.com加载的JS是工作在http://home.com的,它的源不是提
vue.js之路由
Vue.js本身只提供数据与视图绑定及组件化等功能,如果想用它来开发一个完整的SPA(单页面应用),我们就还需要使用一些Vue.js的插件。今天我学习一种叫做Vue-router的插件,用来提供路由管理这个功能。一、安装vue-router插件1、安装bower:和npm类似的bower->(前端)包管理器npminstallbower-g验证:bower--versionbower用法:bowerinstall<包名>安装包boweruninstall<包名>卸载包bowerinfo<包名>查看包版本信息2、用bower安装vue和vue-router插件bowerinstallvuebowerinstallvue-router二、路由的基本用法1、vue-router的基本作用就是将每个路径映射到对应的组件,并通过修改路由进行组件间的切换。