精华内容
下载资源
问答
  • const transpiler = require ( 'bson-transpilers' ) ; const input = 'javascript' ; const output = 'java' ; const string = ` { item: "book", qty: Int32(10), tags: ["red", "blank"], dim_cm: [14, Int32("81...
  • 编译器:是一个总括术语,用来描述一个程序,它接受用一种语言编写的源... transpilers是向另一个编译器编译,在同类语言中降级编译。比如babel将ES6++的代码编译成es5的代码给浏览器。 参考:Compiling vs Transpiling

    编译器:是一个总括术语,用来描述一个程序,它接受用一种语言编写的源代码,并用另一种语言生成一个(或多个)输出文件。在实践中,我们主要使用这个术语来描述编译器,比如gcc,它接受C代码作为输入,并生成二进制可执行文件(机器代码)作为输出。

    Transpiler也称为源到源编译器。因此,本质上,它们是编译器的一个子集,接受一个源代码文件,并将其转换为另一个源代码文件,使用其他语言或同一语言的不同版本。输出通常是人类可以理解的。该输出仍然必须经过编译器或解释器才能在机器上运行

    我的理解是

    • compiler是向机器,即向下编译,给机器读取的,或者是将一种语言编译成另一种语言。比如上面说的例子,以及将c++编译成js的编译器。
    • transpilers是向另一个编译器编译,在同类语言中降级编译。比如babel将ES6++的代码编译成es5的代码给浏览器。

    参考:Compiling vs Transpiling

    展开全文
  • 提交于 (2015 年 3 月 3 日) (2015 年 6 月 18 日)
  • 使用JSPM插件进行翻译,为什么以及如何进行? 为什么? “ Typescript”是“ JavaScript”的超集。 它比网络上描述的“ JavaScript”具有多个优势。 “少”是“ CSS”的超集。 它比网络上描述的“ CSS”具有多个...
  • 英文原文 ... 摘译(文章内的代码有些过期,部分改动): Transpilers, orsource-to-sourcecompilers,读取用一个编程语言写的源代码,然后产生相等的另一个语言。 你写的语言被翻译成J...

    英文原文

    https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them

     

    摘译(文章内的代码有些过期,部分改动):

     

    Transpilers, or source-to-source compilers,读取用一个编程语言写的源代码,然后产生相等的另一个语言。

    你写的语言被翻译成JavaScript,被称为compile-to-JS语言。

     

    你可能听说过CoffeeScript或者TypeScrip这类语言。

    CoffeeScript会提供语法糖,非原生JavaScript。

    TypeScript更极端,增加了 classical object-oriented semantics to a fundamentally different language.

    "use strict";
    
    // TypeScript -- JavaScript, with types and stuff
    function printSecret ( secret : string ) {
        console.log("${secret}. But don't tell anyone.");
    }
    
    printSecret("I don't like CoffeeScript.");

     

    问题是JavaScript环境只理解原生js。你不能在控制台写那两种代码,会报告❌。

    甚至在就浏览器,你写一些纯js 代码,仍会报告❌。比如, Template literals就不支持旧浏览器。

     

    因此, transpiler来了,它读取Coffeescript, TypeScript, ES2015, 转化为plain js, 让旧浏览器也支持。

     

    In Defense of Transpilers

    不同的语言开发,有不同的偏好。如 Pythonistas like CoffeeScript. 

    但你可能只喜欢plain js。

     

    不同的浏览器使用不同的js engine。因此使用编译器把你用ES6写的代码转化为所有浏览器都支持的ES5。

    这样,你就可以使用任何功能了。

     

    总之,编译器:

    1. 允许我们写compile-to-JavaScript languages, like CoffeeScript, TypeScript, or ClojureScript;
    2. 让我们使用新的和潜在的js features
    3. Contribute to the development of the ECMAScript specification.

     

    Using Transpilers

    比较流行的编译器是Babel

    本章:

    1. Comparing ES2015 source to transpiled output;
    2. Setting up the Babel command-line interface (CLI); and
    3. A look at how build toolks like Webpack, JSPM, and Babelify streamline the process.

     

    使用 Babel's live transpiler. 在左边窗口写一些包含ES6功能的代码,然后会转化为ES5的代码。

     

    Setting Up the Babel CLI

    To get started:

    1. Create a directory somewhere;
    2. Initialize it as an NPM project;
    3. Install the Babel tool, along with the presets and plugins we'll be using; and
    4. Configure Babel to use those presets and plugins.
    cd && mkdir babel_example &&  cd babel_example
    
    //Node默认的模块管理器,用来按照和管理Node模块。
    //初始化,生成一个新的package.json文件
    npm init
    
    npm install --save-dev babel-cli babel-preset-es2015 babel-plugin-transform-async-to-generator  

     

    安装Babel CLI,

    安装babel-preset-es2015,一组插件集合,用于支持所有的ES2015功能。

    安装babel-plugin-transform-async-to-generator, 可以使用ES7的功能Async await关键字。

     

    备注:原文再往下就说的很模糊。所以网上找了几篇文章,尝试多次,解决。下面是经验总结。

    使用Babel cli详解 (讲解最清楚。)

    阮一峰的入门教程

     

    首先,再项目文件夹根目录下,创建.babelrc。添加:

    //根据需要添加插件和预设的规则集。
    {
        "presets": ["es2015"],
        "plugins": ["transform-async-to-generator"]
    }

     

    然后,创建一个index.js文件,写一些ES6代码。

    最后, npm run babel, 但是报告❌。

    npm ERR! missing script: babel

     

    这是因为非全局安装,所以报告错误。

    修改package.json文件:

    //添加脚本:
       "scripts": {
         "babel": "babel"
       },

    然后再运行, npm run babel,会再屏幕输出index.js的转码。

     

    同样,如果想要使用babel-node命令(提供支持ES6的repl环境。可以直接运行所有的ES6代码),

    //添加脚本,会调用文件babel-node, 执行相关脚本。
       "scripts": {
         "babel-node": "babel-node"
       },

     

    然后npm run babel-node

    > babel_1@1.0.0 babel /Users/chentianwei/babel_1
    > babel-node
    
    >  (x => x * 2)(1)
    2

     

     

    官网的批量转码:

    推荐的方式:

    +   "scripts": {
    +     "build": "babel src -d build"

    项目根目录下,需要建立src和lib目录。(其他目录也可,对应着改)。

    然后输入 

    ~/babel_1 ⮀ npm run build
    
    > babel_1@1.0.0 build /Users/chentianwei/babel_1
    > babel src -d build
    
    src/index.js -> build/index.js

     

    注意⚠️windows下的使用有区别,具体见使用Babel cli详解 


     

     

    使用babel-polyfill实现对ES6新API的支持

    Babel 默认只转码 ES6 的新语法(syntax),而不转换新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign、Array.from)都不会转码。

    如果想让这些方法运行,必须使用  babel-polyfill,为当前环境提供一个垫片。
     
    安装:
    npm install --save-dev babel-polyfill
     

     

    转载于:https://www.cnblogs.com/chentianwei/p/10230652.html

    展开全文
  • Compilers, Transpilers and Languages编译器,透明机和语言 Compression压缩 Continuous Integration持续整合 Cryptography密码学 Database数据库 Database Drivers数据库驱动程序 Datetime具体时间 Decompilation...
    
    

    Awesome系列的.Net资源整理。awesome-dotnet是由quozd发起和维护。内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等。

    算法与数据结构(Algorithms and Data structures)

    • Algorithmia -.NET 3.5及更高版本的算法和数据结构库。 算法包含复杂的算法和数据结构,如图,优先级队列,命令,撤消重做等。
    • C# Algorithms - 标准数据结构和算法的C#即插即用类库项目。 它包含35多个数据结构和30多种被设计为面向对象的隔离组件的算法.

    应用程序接口(API)

    • NancyFx -轻量级,低成本的框架,用于在.Net和Mono上构建基于HTTP的服务
    • ASP.NET WebAPI -框架,可以轻松构建覆盖广泛客户端(包括浏览器和移动设备)的HTTP服务
    • Breeze - Api框架,通过使用OData 3协议实现丰富的数据访问。 客户端库可用于Javascript和C#。
    • Mobius: C# API for Spark -Mobius将C#语言绑定添加到Apache Spark,实现了C#中的Spark驱动程序代码和数据处理操作。
    • ServiceStack -为所有人设计了周到的设计,淫秽,快速,彻底的愉快的网络服务
    • Nelibur -Nelibur是基于纯WCF的基于消息的Web服务框架。 Nelibur简化了创建高性能和基于消息的Web服务,您肯定拥有WCF的全部功能。
    • WebAPI Contrib -收集开源项目,以帮助您改善使用ASP.NET Web API的工作

    应用程序框架(Application Frameworks)

    • ASP.NET Boilerplate - 新的现代ASP.NET MVC Web应用程序的起点,具有最佳实践和最流行的工具。
    • Orleans - 奥尔良是一个框架,提供了一种直观的方法来构建分布式的大型计算应用程序,而不需要学习和应用复杂的并发或其他缩放模式
    • CoreFX - corefx repo包含.NET Core的库实现(称为“CoreFX”)。 它包括System.Collections,System.IO,System.Xml和许多其他组件。 它在Windows上构建和运行。 您可以“观看”该回购,以便在未来几个月内添加Linux和Mac支持。
    • CSLA .NET - 业务层开发框架http://cslanet.com/
    • Mono - 单声道开源ECMA CLI,C#和.NET实现
    • Mono-Addins - Mono.Addins是创建可扩展应用程序的通用框架,也是用于创建扩展这些应用程序的加载项
    • peasy - Peasy是一个中间层框架,提供易于使用和灵活的规则引擎,旨在解决诸如并发处理,事务支持,容错,线程,可扩展性,异步和多客户端支持等常见问题,以及易于测试 一个巨大的学习曲线!
    • Spring.Net - Spring.NET是一种开源应用程序框架,可以使企业.NET应用程序的构建更加轻松
    • DotNetty - DotNetty是Netty的一个端口,用于快速开发可维护的高性能协议服务器和客户端的异步事件驱动的网络应用程序框架。

    模板引擎(Application Templates)

    • ASP.NET Core Starter Kit -后端:.NET Core,EF Core,C#; 前端:Babel,Webpack,React,CSS模块
    • MVC.Template - ASP.NET核心MVC项目启动器模板。
    • ProjectScaffold - F#Foundation推荐的原型.NET解决方案包括文件系统设置,用于依赖的Paket和用于构建/测试自动化的FAKE。 默认情况下,构建过程还编译文档并生成NuGet软件包。
    • Serene -Serenity是一个ASP.NET MVC应用程序平台,旨在通过基于服务的架构简化和缩短以数据为中心的业务应用程序的开发。 宁静是构建宁静应用程序的起始模板。
    • Side-Waffle -大量收集有用的Web和桌面开发模板。
    • Template10 - Windows 10模板与设计模式。

    人工智能(Artificial Intelligence)

    • AIMLBot (Program#) - C#中的基于AIML(人工智能标记语言)的chatter bot的小而快速的,符合标准的易于定制的实现。
    • SIML -综合智能标记语言,下一代Chatbot&Digital Assistant语言。

    程序集与装配件(Assembly Manipulation)

    • dnSpy - dnSpy是从ILSpy分叉的.NET程序集编辑器,反编译器和调试器。
    • Fody - 用于编织.net程序集的可扩展工具
    • Mono.Cecil -Cecil是以ECMA CIL形式生成和检查程序和图书馆的图书馆。

    资源(Assets)

    • Cassette - 管理.NET Web应用程序资源(脚本,css和模板)
    • NodeAssets - .net的资产管理器,使用SignalR进行实时更新,可以选择使用NodeJS编译器
    • Bundle Transformer - Microsoft ASP.NET Web Optimization Framework的模块化扩展。 它的模块支持LESS,Sass,CoffeeScript,TypeScript,Mustache,Handlebars,Autoprefixer以及一堆不同的JS和CSS细化器
    • Bundler - 编译和缩小/ Sass / Stylus / Css / JS / CoffeeScript / LiveScript文件。 与MVC和ServiceStack集成
    • SquishIt -让你轻松捆绑一些css和javascript

    验证与授权(Authentication and Authorization)

    • ASP.NET Identity -ASP.NET应用程序的新成员系统
    • DotNetOpenAuth - OpenID,OAuth和InfoCard协议的C#实现
    • Logibit Hawk - F#Hawk认证库
    • IdentityModel -用于.NET 4.5和MVC4 / Web API中的身份和访问控制的助手库。
    • IdentityServer -可扩展OAuth2和OpenID Connect提供程序框架。
    • OAuth - 用于生成用C#编写的OAuth 1.0a签名的非常轻量级的库
    • Stuntman - Stuntman是用于在利用.NET声明身份的开发过程中模拟用户的图书馆。

    Books书籍

    Build Automation 构建自动化

    • Psake - .基于BNET的构建自动化工具,用PowerShell编写
    • FAKE - F#Make,跨平台构建自动化系统
    • Invoke-Build - PowerShell构建和测试自动化工具灵感来自Psake。
    • MSBuild - Microsoft Build Engine(MSBuild)是.NET和Visual Studio的构建平台
    • Cake - Cake(C#Make)是具有C#DSL的跨平台构建自动化系统。
    • Nake - 基于魔术脚本的C#任务跑步者

    Caching缓存

    • CacheCow - 客户端和服务器上的ASP.NET Web API HTTP缓存实现
    • Akavache - 异步的,持久的键值存储
    • CacheManager - 缓存的通用接口和抽象层。
    • CacheAdapter - 另一个用于缓存的缓存提取层,具有增强的缓存API使用。
    • Foundatio - 与内存,redis和混合实现的通用接口。

    CLI 命令行接口

    • Command Line Parser -命令行解析器库为CLR应用程序提供了一个干净简洁的API,用于操纵命令行参数和相关任务
    • Fluent Command Line Parser - 一个简单,强类型的.NET C#命令行解析器库,使用流畅的易于使用的界面
    • Power Args - PowerArgs将命令行参数转换为易于编程的.NET对象。 它还提供了大量可选功能,如参数验证,自动生成的使用,选项卡完成以及大量可扩展性
    • Argu - F#应用程序的声明式CLI参数和XML配置解析器。
    • Appccelerate - Command Line Parser -具有流畅定义语法,不同参数类型,必需和可选参数,值限制,别名,类型转换和半自动使用帮助消息组合的命令行解析器
    • Colorful.Console - 彩色控制台输出。

    CLR 公共语言运行库

    • CoreCLR -coreclr repo包含.NET Core的完整运行时实现(称为“CoreCLR”)。 它包括RyuJIT,.NET GC,本机互操作和许多其他组件。 它在Windows上构建和运行。 您可以“观看”该回购,以便在未来几个月内添加Linux和Mac支持。

    CMS 内容管理系统

    • Composite C1 -专注于UX和适应性的Web CMS
    • mojoPortal MojoPortal是一个可扩展,跨数据库,移动友好的Web内容管理系统(CMS)和用C#ASP.NET编写的Web应用程序框架
    • N2CMS - 开源,轻量级,代码优先的CMS能够无缝集成到任何MVC项目中。
    • Orchard 免费,开源,以社区为重点的项目,旨在在ASP.NET平台上提供应用程序和可重用的组件
    • Piranha CMS - Piranha是一个有趣,快速和轻量级的.NET框架,用于开发基于cms的Web应用程序,并增加了一些空间。 它建立在ASP.NET MVC和Web页面上,与Visual Studio和WebMatrix完全兼容.http://piranhacms.org
    • Umbraco - Umbraco是一个基于ASP.NET平台的免费开源内容管理系统
    • BetterCMS - 开源.NET开发人员和发行商的直观用户界面
    • DotNetNuke - DNN平台是我们免费的开源网络CMS,也是每个专业DNN解决方案的基础。 全球有超过75万家机构建立了由DNN平台提供支持的网站。

    Code Analysis and Metrics代码分析和指标

    • App.Metrics -App Metrics是一个开源和跨平台的.NET库,用于在应用程序中记录和报告指标,并报告其健康状况。 查看文档给我详细信息。
    • CodeMaid - Visual Studio扩展清理,挖掘和简化C#,C ++,F#,VB,PHP,JSON,XAML,XML,ASP,HTML,CSS,LESS,SCSS,JavaScript和TypeScript编码。
    • StyleCop - StyleCop分析C#源代码来强制执行一组样式和一致性规则
    • Gendarme - 可扩展的基于规则的工具,可以在.NET应用程序和库中找到问题
    • Metrics-Net - 捕获CLR和应用程序级度量。 所以你知道发生了什么。
    • AspNet.Metrics -捕获CLR,应用级Web请求指标。 使用Metrics-Net的中间件和扩展
    • BenchmarkDotNet - 强大的.NET库进行基准测试。
    • Codinion - 增强C#语法突出显示和其他“Visual”功能。

    Code Snippets代码片段

    • .NET Fiddle - 在浏览器中编写并运行C#代码。 C#相当于JSFiddle
    • Gistlyn - 创建,运行和共享您的可执行文件C#Github Gists。
    • TryRoslyn - 运行C#代码使用不同的分支和版本的Roslyn ..

    Compilers, Transpilers and Languages编译器,透明机和语言

    • Bridge.NET - 开源C#到JavaScript编译器 http://bridge.net/
    • ClojureCLR -Clojure的一个端口到CLR,这是Clojure项目的一部分
    • F# - F#编译器,核心库和工具 - 一种更安全,更快速,更好的代码写入的功能编程语言。
    • FunScript - F#到具有JQuery等的JavaScript编译器通过TypeScript类型提供程序进行映射。
    • IronScheme - R6RS Scheme编译器,运行时和许多标准库
    • JSIL - CIL到Javascript编译器http://jsil.org/
    • Mono-basic -Visual Basic编译器和运行时
    • Nemerle - Nemerle是.NET平台的高级静态类型编程语言。 它提供功能,面向对象和必要的功能。 它有一个简单的C#类语法和强大的元编程系统http://nemerle.org/About
    • Netjs - NET到TypeScript和JavaScript编译器。 便携式类库为此工作非常好。 你甚至可以通过EXE。
    • P - P是用于异步事件驱动编程的语言。
    • Roslyn - NET编译器平台(“Roslyn”)为开源C#和Visual Basic编译器提供了丰富的代码分析API。 它使建立代码分析工具与Visual Studio使用的相同的API。
    • VisualFSharp - Visual F#编译器和工具
    • Fable -F#到JavaScript编译器
    • LinqOptimizer -用于顺序和并行LINQ的自动查询优化器编译器
    • Roslyn-linq-rewrite - 编译C#代码,首先使用简单的过程代码重写LINQ表达式的语法树,最大限度地减少分配和动态调度。

    Compression压缩

    • SharpCompress - SharpCompress是用于.NET / Mono / Silverlight / WP7的压缩库,可以解压缩,解压缩,解压缩,解压缩解压缩,并使用只读和随机访问API解压缩。 对zip / tar / bzip2 / gzip的写入支持实现
    • DotNetZip.Semverd - 一个开源项目,提供用于处理ZIP文件的.NET库和一些相关工具。 (Unmaintained DotNetZip的fork)
    • SharpZipLib - 一个完全用C#编写的.NET平台的Zip,GZip,Tar和BZip2库
    • Snappy for Windows - 在PInvoke上烘烤的.NET的Snappy压缩库
    • Snappy.Sharp - 在C#中实现Google的Snappy压缩算法。

    Continuous Integration持续整合

    • TeamCity - 准备工作,可扩展和开发人员友好的构建服务器 - 开箱即用[$]
    • CruiseControl.NET - 一个使用.NET Framework实现的自动连续集成服务器
    • MyGet - 持续集成和部署NuGet,NPM,Bower和VSIX的托管软件包。 [免费为OSS] [$]
    • AppVeyor - .NET持续集成和部署即服务。 [$] [免费为OSS]

    Cryptography密码学

    • BouncyCastle - 与.Net System.Security.Cryptography一起,用于CLR上的加密算法的参考实现。
    • HashLib - HashLib是几乎所有的哈希算法的集合,它几乎可以支持所有的哈希算法,非常容易使用
    • libsodium-net - libsodium for .NET - 安全加密库
    • Pkcs11Interop - 托管的.NET包装器,用于提供对加密硬件的访问的非托管PKCS#11库
    • StreamCryptor - 流加密和解密与libsodium和protobuf

    Database数据库

    Database Drivers数据库驱动程序

    • MySQL Connector - Connector / Net是用于MySQL的完全管理的ADO.NET驱动程序
    • Npgsql - .Net数据提供者Postgresql
    • MongoDB - 官方MongoDB C#驱动
    • RethinkDb.Driver - .A C中的RethinkDB数据库驱动程序,争取100%的ReAL API兼容性和完整性。
    • ServiceStack Redis - .NET领先的C#Redis客户端
    • StackExchange Redis - StackExchange的通用redis客户端
    • Cassandra - 适用于Apache Cassandra的DataStax .NET驱动程序
    • Couchbase - 官方couchbase .NET客户端库,基于Enyim memcached客户端
    • Firebird.NET - .NET数据提供程序是用C#编写的,它提供了Firebird API的高性能本机实现

    Datetime具体时间

    • NodaTime - Noda Time是.NET的替代日期和时间API。 它可以帮助您更清楚地思考您的数据,并更准确地表达对该数据的操作。 http://nodatime.org/
    • DateTimeExtensions - 公共日期时间操作以System.DateTime的扩展形式,包括几个文化区域设置的假日和工作日计算。
    • Exceptionless.DateTimeExtensions -DateTimeRange,工作日和各种DateTime,DateTimeOffset,TimeSpan扩展方法。

    Decompilation解压

    Deployment部署

    • Unfold - 基于Powershell的.net Web应用程序的部署解决方案
    • DbUp - ..NET库可帮助您将更改部署到SQL Server数据库。 它跟踪哪些SQL脚本已经运行,并运行更新脚本,以使数据库保持最新
    • Octo Pack - 用于使用诸如八达通部署之类的工具来构建应用程序的nuget软件包进行部署

    DirectX 多媒体编程接口

    • SlimDX - 适用于.NET应用程序的DirectX框架包装器
    • SharpDX - SharpDX是一个开源项目,在所有Windows平台上提供.Net的完整DirectX API,可开发高性能游戏,2D和3D图形渲染以及实时声音应用。

    Distributed Computing分布式计算

    • Orleans - Orleans是一个框架,提供了一种直观的方法来构建分布式的大型计算应用程序,而无需学习和应用复杂的并发或其他缩放模式。 它是由微软研究所创建的。
    • Orleankka -Orleankka是Microsoft Orleans框架的功能API。 它非常适合具有可组合,统一通信接口的优化方案,例如:CQRS,事件源,重新路由,FSM等。适用于F#的附加API称为Orleankka.FSharp。.
    • Akka.net - Akka.NET是流行的Java / Scala框架Akka to .NET的端口。 这是一个社区驱动的端口,不隶属于使用原始Java / Scala版本的Typesafe。
    • Zebus - Zebus是一种轻量级,高度通用的对等服务总线,构建了CQRS原则。 它允许应用程序以快速和容易的方式相互通信。 大部分复杂性都隐藏在库中,您可以专注于编写对您很重要的代码,而不是调试消息代码。 任何分布式应用程序的基础.
    • FsShelter - 用于创建Apache Storm组件和拓扑的F#库。 提供分布式和容错事件流处理的高级抽象。
       
    • Foundatio - 用于构建分布式应用程序的可插入基础块。
    • MBrace - 集成数据脚本为云

    DLR (Dynamic Language Runtime 动态语言运行时)

    • cmd - C#库以更简单的方式运行外部程序。 演示C#的“动态”功能。

    Documentation 文档

    Exceptions 异常

    E-Commerce and Payments电子商务和付款

    Environment Management环境管理

    • Dotnet CLI - 跨平台.NET Core命令行工具链实用程序。

    ETL (Extract Transform Load) 数据装载工具

    • Reactive ETL - 反向ETL是使用.NET的反应扩展来重写Rhino ETL

    Functional programming功能编程

    • language-ext - 该库使用和滥用C#6+的功能来提供一个功能“基类库”,如果你眯眼,可以看起来像语言本身的扩展。 它还包括一个“Erlang like”进程系统(actors),可以可选地将消息和状态保存到Redis(请注意,您可以在没有Redis的应用程序内消息传递中使用它)。 过程系统还支持Rx流的消息和状态,允许完整的反应事件和消息分派系统.

    Game 游戏

    • MonoGame - 创建强大的跨平台游戏的一个框架
    • CocosSharp - CocosSharp是Cocos2D和Cocos3D API的C#实现,可以在任何运行MonoGame的平台上运行
    • Duality - 二元性是一个2D游戏开发框架。 专注于模块化,配有视觉编辑器。
    • Xenko - Xenko是一款2D / 3D跨平台游戏引擎,具有场景编辑器,粒子,物理渲染(PBR),脚本编写等等
    • Wave Engine - Wave引擎是一款免费的基于C#组件的现代游戏引擎,可以让您创建支持kinect,oculusrift,vuforia,纸板,跳跃等功能的跨平台游戏。
    • UrhoSharp -UrhoSharp是在iOS,Mac,Windows,Android和Linux系统上运行的Urho3D游戏引擎的C#实现
    • Nez - Nez是一个免费的2D集中框架,与MonoGame和FNA合作

    GIS 地理信息系统

    • NetTopologySuite .NET平台的快速可靠的.NET GIS解决方案
    • SharpMap 一个易于使用的映射库,用于Web和桌面应用程序
    • OsmSharp - C#库可以使用OpenStreetMap(OSM)数据。 提供OSM数据的阅读,写作和路线规划。

    Git ToolsGit 工具

    Graphics 图形编程

    • LibTessDotNet - 着名的GLU Tessellator的.NET端口,三角形多边形
    • Oxyplot - OxyPlot是.NET的跨平台绘图库
    • OpenTK - Open Toolkit是一个高级的低级C#库,它包装OpenGL,OpenCL和OpenAL
    • NGraphics -NGraphics是一个用于在.NET上渲染矢量图形的跨平台库
    • Live-Charts - 动画,MVVM导向和现代图表库

    GUI 图形用户界面

    • MahApps.Metro -用于创建Metro风格WPF应用程序的工具包
    • Callisto - Windows 8 XAML应用程序的控制工具包。 包含一些UI控件,以便根据Windows UI指南,轻松地为Windows Store创建Windows UI样式的应用程序。
    • ObjectListView -ObjectListView是围绕.NET ListView的C#包装器。 它使ListView更容易使用,并教给它一些新的技巧
    • DockPanelSuite - Visual Studio启发了.NET WinForms的对接库
    • AvalonEdit - SharpDevelop中使用的基于WPF的文本编辑器组件
    • XWT - 用于使用.NET和Mono创建桌面应用程序的跨平台UI工具包
    • Gtk# -Gtk#是一个Mono / .NET绑定到跨平台Gtk + GUI工具包和大多数用Mono构建的GUI应用程序的基础
    • MaterialDesignInXamlToolkit - 用于创建材质风格的WPF应用程序的工具包
    • Eto.Forms - 适用于.NET和Mono中桌面和移动应用程序的跨平台GUI框架
    • Dragablz - 可拆卸,可撕裂的WPF选项卡控件(类似于Chrome),支持布局,并且是完全主题的,包括与MahApps和Material Design兼容的主题。
    • Fluent.Ribbon - 流畅的色带控制套件是一个实现一个Office和Windows 8样的功能区为WPF的库。
    • Office Ribbon - 实现WinForms的MS Office功能区的库..
    • Perspex -一个多平台的.NET UI框架。
    • MaterialSkin -本文的.NET WinForms,C#或VB.Net,针对Google的材料设计原则。
    • Xamarin.Forms - 从单一的共享C#代码库构建iOS,Android和Windows的本机UI。
    • SciterSharp - 使用不仅仅是HTML创建.NET跨平台桌面应用程序,而是Sciter引擎的所有功能:CSS3,SVG,脚本,AJAX,<video> ... Sciter是免费的商业用途
    • Empty Keys UI - 多平台和多引擎XAML用户界面库[免费] [专有]
    • UWP Community Toolkit - UWP社区工具包是帮助函数,自定义控件和应用程序服务的集合。 它简化并展示了为Windows 10构建UWP应用程序的常见开发人员任务。
    • ScintillaNET - 用于Scintilla文本编辑器组件的Windows Forms控件(Scintilla由Notepad ++使用)
    • FastColoredTextBox - Fast Colored TextBox是.NET的文本编辑器组件。 允许您创建具有语法高亮显示的自定义文本编辑器。 它适用于小,中,大和非常大的文件。

    HTML and CSS

    HTTP 超文本传输协议

    • Http.fs - [F#]的功能HTTP客户端。
    • RestSharp - 简单的REST和HTTP API客户端.NET
    • Flurl.Http -流畅,便携,可测试的REST / HTTP客户端库
    • EasyHttp - C#的Http库
    • Refit - Xamarin和.NET的自动类型安全的REST库
    • RestEase - 易于使用的类型安全REST API客户端库,简单可定制。 重新启发灵感
    • HttpClientGoodies -用于使用HttpClient的实用程序

    IDE 集成开发环境

    • SharpDevelop -一个用于.NET编程语言的免费IDE
    • MonoDevelop - MonoDevelop是一个主要针对Mono / .NET开发人员的跨平台IDE
    • Visual Studio Express - Visual Studio for .NET编程的免费轻量级版本。
    • Visual Studio Community -全功能IDE - 免费
    • Waf DotNetPad - 一个简单而快速的代码编辑器,使C#或Visual Basic有趣的程序。
    • Visual Studio Code - 基于GitHub Atom的来自Microsoft的优秀免费编辑器。
    • Ionide - 用于跨平台F#开发的Atom编辑器和Visual Studio代码包套件。
    • Rider -基于IntelliJ平台和ReSharper的跨平台C#IDE

    Image Processing图像处理

    • ImageResizer -将命令添加到映像URL以获取更改的版本(以毫秒为单位)。 实时调整图像的大小,编辑等。
    • ImageProcessor -开放源代码的.NET库来动态处理图像。
    • DynamicImage -用于ASP.NET的高性能开源图像处理库.
    • MetadataExtractor - 从图像文件中提取Exif,IPTC,XMP,ICC和其他元数据。
    • Emgu CV - OpenCV库的跨平台.NET包装器。
    • DotImaging - 简约.NET成像便携式平台。
    • Magick.NET - .ImageMagick库的NET包装器。

    Install tools安装工具

    • Wix Toolset - 最强大的一组可用于创建Windows安装体验的工具
    • Squirrel - 松鼠既是一套工具和一个库,可以完全管理安装和更新桌面Windows应用程序。
    • Chocolatey - 像yum或apt-get,但对于Windows。

    Internationalization国际化

    • i18n - ASP.NET MVC的智能国际化
    • MessageFormat.NET - .NET中的ICU MessageFormat实现可让您编写上下文UI消息(PCL库)

    Interoperability互操作性

    • CppSharp - 将C ++ API表达到C#的工具
    • Sharpen - Sharpen是由db4o创建的Eclipse插件,可让您将Java项目转换为C#
    • CXXI -C ++互操作框架

    IoC 控制反转

    • Castle Windsor - 城堡温莎是最好的品种,成熟的反转控制容器可用于.NET和Silverlight
    • Unity - 轻量级可扩展依赖注入容器,支持构造函数,属性和方法调用注入
    • Autofac - 一个令人上瘾的.NET IoC容器
    • Ninject - .net依赖注入的忍者
    • StructureMap - 原始IoC / DI容器.Net
    • Spring.Net - Spring.NET是一种开源应用程序框架,可以使企业.NET应用程序的构建更加轻松
    • LightInject - 超轻量级IoC容器
    • TinyIoC - 单文件,易于跨平台的IoC容器
    • Simple Injector - 简单的注射器是易于使用的依赖注入(DI)库,适用于支持Silverlight 4+,Windows Phone 8,Windows 8(包括通用应用程序和单声道)的.NET 4+。
    • Microsoft.Extensions.DependencyInjection - ASP.NET Core应用程序的默认IoC容器.
    • Scrutor -Microsoft.Extensions.DependencyInjection的装配扫描扩展。

    JavaScript Engines JavaScript引擎

    • ClearScript -一个库,可以轻松地将脚本添加到.NET应用程序。 它目前支持JavaScript(通过V8和JScript)和VBScript。
    • Edge.js - 在Windows,MacOS和Linux上运行.NET和Node.js代码
    • Jint -适用于.NET的JavaScript解释器,提供完整的ECMA 5.1兼容性,可在任何.NET平台上运行.
    • Jurassic - ECMAScript语言和运行时的实现。 它旨在为.NET提供最佳性能和最符合标准的JavaScript实现。

    Logging 日志

    • Essential Diagnostics - 扩展System.Diagnostics命名空间的内置功能,以提供灵活的日志记录
    • NLog - NLog - 高级.NET和Silverlight日志记录
    • Logazmic - Windows的开源nlog查看器
    • ELMAH -官方ELMAH网站
    • Elmah MVC - Elmah为MVC
    • Logary - Logary是mono和.Net的高性能,多目标日志记录,度量,跟踪和健康检查库。 .Net的DropWizard的答案。 支持许多针对微服务的目标。
    • Log4Net - Apache log4net库是一种帮助程序员将日志语句输出到各种输出目标的工具
    • Serilog - NoSQL时代的无废话记录库。 将传统和结构化诊断日志记录的最佳方法结合在一个易于使用的包中。
    • StackExchange.Exceptional - 用于Stack Exchange网络的错误处理程序
    • Semantic Logging Application Block (SLAB) - 扩展System.Diagnostics.Tracing命名空间(EventSource类)的内置功能,以记录到多个接收器,包括Azure表,数据库,文件(JSON,XML,文本)。 支持通过ETW的进程内和进程外记录,以及Rx用于实时过滤/聚合事件。
    • Foundatio - 流畅的日志记录API,可用于在整个应用程序中记录消息。
    • Exceptionless -异常.NET客户端
    • Loupe - 集中化.NET日志记录和监控。 [专有] [免费层]

    Machine Learning and Data Science 机器学习与数据科学

    • Infer.NET - 在图形模型中运行贝叶斯推理的框架。 它也可以用于概率编程。 [专有] [免费] [研究]
    • Accord.NET - 机器学习框架结合音频和图像处理库(计算机视觉,计算机试听,信号处理和统计)。
    • Accord.NET Extensions - 高级图像处理和计算机视觉算法作为流畅的扩展.
    • AForge.NET - 计算机视觉与人工智能(图像处理,神经网络,遗传算法,机器学习,机器人)领域的开发人员和研究人员框架。
    • Deedle - 数据帧和(时间)系列库用于使用C#和F#进行探索性数据处理
    • FsLab - F#和.NET的数据科学和机器学习库的集合
    • numl - 旨在包括最受欢迎的监督和无监督学习算法,同时最小化创建预测模型所涉及的摩擦.
    • R Provider - 键入提供者,以类型安全的方式向R#调用者公开R包和函数
    • F# Data - 用于访问XML,JSON,CSV和HTML文件(基于示例文档)和访问WorldBank数据的F#类提供程序

    Markdown ProcessorsMarkdown 处理器

    • MarkdownSharp - 开源C#实现的Markdown处理器,作为Stack Overflow的特色。
    • F# Formatting - 用于记录F#和C#项目的工具。 该库包含可扩展的Markdown解析器作为核心组件
    • CommonMark.NET -在C#中实现CommonMark规范,将Markdown文档转换为HTML。 针对最大的性能和可移植性进行了优化。
    • markdig - 一个快速,功能强大的CommonMark兼容的可扩展Markdown处理器。

    Mail邮件

    • FluentEmail - System.Net.Mail的流畅包装,带有剃须刀模板支持。
    • MailKit -一个完整的跨平台邮件堆栈,包括IMAP,POP3,SMTP,认证等。 建在MimeKit的顶部。
    • MimeKit - 支持S / MIME,PGP,TNEF和Unix mbox线轴的跨平台.NET MIME创建和解析器库。
    • PreMailer.Net - C#库将您的样式表移动到内联样式属性,以最大程度地兼容电子邮件客户端。

    Mathematics数学

    • MathNet -Math.NET是一个开源计划,用于构建和维护涵盖基础数学的工具包,针对高级的每日需求.Net开发人员
    • Microsoft Automatic Graph Layout - 一组用于图形布局和查看的工具.
    • UnitConversion - .Net Core和.Net框架的可扩展单元转换库

    Media媒体

    • TagLib# - TagLib#(又名taglib-sharp)是用于在媒体文件中读取和写入元数据的库,包括视频,音频和照片格式
    • NAudio - 以各种文件格式播放,解码和编码音频,如MP3,MP4,WAV,AIFF,Speex等。

    Metrics指标

    • C# StatsD Client -Etsy的StatsD的C#客户端
    • Foundatio - 与内存,redis,StatsD和Metrics.NET实现的通用接口。

    Micro Framework 微框架

    Minification 精简

    • Microsoft Ajax Minifier - 包含具有最高性能的JS和CSS细化器,因为它是专为.NET设计的。 可选地生成JS代码的Source Maps
    • Web Markup Minifier - .NET库包含一组标记分组。 该项目的目标是通过减少HTML,XHTML和XML代码的大小来提高Web应用程序的性能

    Misc杂项

    • CSharp Pad - 基于Web的C#REPL,具有令人敬畏的代码完成。
    • AzureCrawler - 为您的角度,Ember,Durandal或任何JavaScript应用程序拍摄HTML快照。
    • BitSharp - C#比特币节点。
    • CSScript - CS-Script是一个基于CLR的脚本系统,它使用C#作为编程语言。 目前CS-Script目标是在Mono完全支持下实现CLR(.NET 2.0 / 3.0 / 3.5 / 4.0 / 4.5)的Microsoft实现。 附带许多其他功能,如脚本托管。
    • CsvHelper - 帮助读取和写入CSV文件的库https://github.com/JoshClose/CsvHelper
    • FlatMapper - 以Linq兼容的方式从数据库导入和导出纯文本文件的库。
    • FluentValidation - .NET的一个小型验证库,它使用流畅的界面和lambda表达式来构建验证规则。
    • Humanizer - Humanizer满足您操作和显示字符串,枚举,日期,时间,时间戳,数量和数量的所有.NET需求
    • LINQPad - 一个C#/ VB / F#暂存器,可立即执行任何表达式,语句块或程序,具有丰富的输出格式和丰富的功能。 还可让您以交互方式查询LINQ中的数据库。 [$]
    • Polly - 以流畅的方式快速执行临时异常处理策略,如Retry,Retry Forever,Wait andRetry或Circuit Breaker。 (.NET 3.5 / 4.0 / 4.5 / PCL / Xamarin)
    • Rant - Rant程序文本生成DSLhttp://berkin.me/rant/
    • ScriptCS - 用文本编辑器,nuget和Roslyn的力量编写C#应用程序!
    • Shielded - .NET的软件事务内存(STM)实现
    • MSBuild ILMerge task - MSBuild ILMerge任务是一个NuGet包,允许您在自动构建和/或Visual Studio项目中使用着名的ILMerge实用程序。
    • ReactJS.NET - ReactJS.NET是一个库,它使得更容易使用Babel以及Facebook的React和来自C#的JSX。
    • Aeron.NET - 高效可靠的UDP单播,UDP组播和IPC消息传输 - Aeron的.NET端口
    • TypeShape - TypeShape是一个小型,可扩展的F#库,用于实际的泛型编程
    • Streams - 一个轻量级的F#/ C#库,用于数据流上的高效功能式管道。
    • MediatR - 在.NET中简单,没有意义的调解器实现
    • Warden - 为您的应用程序,资源和基础设施定义“健康检查”。 把你的监狱长留在手表上
    • ByteSize -ByteSize是一个实用程序类,通过消除所表示的值的歧义,使代码中的字节大小更容易。 ByteSize是以什么System.TimeSpan为单位的时间。
    • Jot - 一个用于持久化和恢复应用程序状态的库(更好地替代.settings文件)。

    MVVM

    • Caliburn.Micro - 一个小而强大的框架,专为在所有XAML平台上构建应用程序而设计。 它对MV *模式的强大支持将使您能够快速构建解决方案,而无需牺牲代码质量和可测试性。
    • MVVM Light Toolkit - 该工具包的主要目的是加速在WPF,Silverlight,Windows Store(RT)和Windows Phone中创建和开发MVVM应用程序
    • Catel - Catel是一个专注于MVVM(WPF,Silverlight,Windows Phone和WinRT)和MVC(ASP.NET MVC)的应用程序开发平台。 Catel的核心包含一个IoC容器,模型,验证,纪念,消息中介,参数检查等。
    • UpdateControls - 更新控件不要求您实现INotifyPropertyChanged或声明DependencyProperty。 它将控件直接连接到CLR属性。 这使它非常适合Model / View / ViewModel模式。
    • ReactiveUI - 集成了反向扩展(Rx)框架的.NET MVVM框架,使开发人员能够使用WPF,Windows Store Apps,WP8或Xamarin构建优雅,可测试的应用程序.
    • Okra App Framework - 以适用于Windows 8.1的以应用为中心的MVVM框架构建了依赖注入,包括一整套Visual Studio MVVM模板。
    • Prism - 一个跨平台的桌面和移动MVVM开发框架。
    • WPF Application Framework (WAF) - 一个轻量级框架,可帮助您创建良好的结构化WPF应用程序。 它支持您应用分层体系结构和Model-View-ViewModel模式。
    • MVVMCross - 适用于WPF,Silverlight for WP7和WP8,Mono for Android,MonoTouch for iOS,Windows Universal项目(WPA8.1和Windows 8.1 Store应用程序)的跨平台mvvm移动开发框架。 广泛使用便携式类库(PCL)来提供可维护的跨平台C#本地应用程序。
    • Stylet -最小的MVVM框架灵感来自Caliburn Micro,具有良好的文档,高测试覆盖率和自己的IoC容器。
    • Gemini - IDE框架在概念上类似于Visual Studio Shell。 基于WPF,AvalonDock和Caliburn Micro。

    Object to object mapping对象映射对象

    • AutoMapper - .NET中基于约定的对象映射器http://automapper.org
    • TinyMapper - .Net的一个小而快速的对象映射器。
    • ExpressMapper -一个轻量级的照明快速.Net映射器,以一种自动化和简单的方式将一种对象映射到另一种对象。 ExpressMapper完全依赖于表达式树。

    Office办公室。

    • ExcelDna - ExcelDna可以更容易地使用C#,F#或VB .NET创建和部署Excel加载项
    • ClosedXML -ClosedXML使开发人员更容易创建Excel 2007/2010文件
    • NPOI - 该项目是POI Java项目的.NET版本http://poi.apache.org/.
    • EPPlus -EPPlus是一个使用Open Office Xml格式(xlsx)读取和写入Excel 2007/2010文件的.net库。
    • Open XML SDK - Open XML SDK提供使用Open XML文档(DOCX,XLSX和PPTX)的开源库).

    ORM 

    • Entity Framework - 对象关系映射器使.NET开发人员可以使用特定于域的对象处理关系数据
    • BL Toolkit - .NET的业务逻辑工具包
    • Dapper - StackExchange的一个简单的对象映射器
    • Dapper Extensions - 通过为您的POCO添加基本CRUD操作(获取,插入,更新,删除)来补充Dapper的小型库
    • Dapper.FastCRUD - Dapper最快的微米扩展
    • NHibernate - NHibernate对象关系映射器
    • Fluent NHibernate - 流畅,无XML,编译安全,自动化,基于约会的NHibernate映射。
    • FluentMigrator - .net的流动迁移框架
    • ServiceStack.OrmLite - 轻巧,简单快捷的基于会议的POCO ORM [免费为OSS] [$]
    • Massive - 一个小而快乐的数据访问工具,将永远爱你。
    • LINQ to DB - 最快的LINQ数据库访问库在您的POCO对象和数据库之间提供简单,轻便,快速和类型安全的层。
    • MicroLite ORM MicroLite ORM是.NET框架的微型对象关系映射器。 它的设计是易于使用,可扩展和可测试。
    • PetaPoco -你的POCO是一个很小的ORM-ish事情
    • AsyncPoco - 一个长期“等待”的完全异步PetaPoco叉
    • NPoco - 简单的microORM将查询的结果映射到POCO对象。 基于Schotime的PetaPoco分公司
    • Limebean - 混合ORM使用SQL片段,不需要模型类。
    • LLBLGen Pro - 实体框架实体建模解决方案,NHibernate,Linq to SQL及其自己的ORM框架:LLBLGen Pro运行时框架。 [$] [免费精简版]
    • Insight.Database - Insight.Database是一种快速,轻量级的微型微软.NET
    • DbExtensions - 数据访问框架,重点关注查询组合,粒度和代码美学.

    Package Management套餐管理

    • NuGet - .NET包管理器
    • MyGet - NuGet,NPM,Bower和VSIX的托管软件包存储库。 还提供CI即服务。 [免费为OSS] [$]
    • Paket - 用于.NET的软件包依赖性管理器,支持NuGet软件包和GitHub存储库http://fsprojects.github.io/Paket/

    PDF

    • ITextSharp - iText是一个PDF库,允许您以便携式文档格式(PDF)[$] [免费为OSS]创建,修改,检查和维护文档

    Profiler剖面仪

    • MiniProfiler - 一个简单而有效的ASP.NET网站的迷你剖析器
    • Glimpse - 网络的开源诊断平台

    Protocols协议

    • SSH.NET - 用于.NET的安全Shell(SSH)库,针对并行性进行了优化。 提供SSH命令,SFTP / SCP上传和下载以及SOCKS4 / SOCKS5 / HTTP代理。

    Push Notifications推送通知

    • PushSharp -用于将推送通知发送到iOS,OSX,Android,Chrome,Windows Phone,Windows 8,Blackberry和Amazon设备的服务器端库。

    Queue队列

    • NServiceBus - 最受欢迎的.NET服务总线
    • Hangfire -令人难以置信的轻松方式在ASP.NET应用程序中执行防火,延迟和重复的任务
    • RabbitMQ.NET -实现用于C#的AMQP客户端库,以及通过WCF暴露AMQP服务的绑定
    • NetMQ - NetMQ是ZeroMQ的100%本机C#端口
    • MassTransit - MassTransit是使用.NET Framework构建松耦合应用程序的精简服务总线实现。
    • Rebus -Rebus是.NET的精简服务总线实现,其性质与NServiceBus和MassTransit类似,只是精简
    • RestBus -RabbitMQ的面向服务的.NET消息库。
    • RawRabbit - RabbitMQ的现代.NET核心库.
    • EasyNetQ - 一个易于使用的.NET API for RabbitMQ
    • Warewolf ESB - 一个易于使用的服务总线和微服务平台。 在可视化IDE中轻松构建应用程序和服务。
    • Kafka Client - .通过Producer / Consumer类提供基本功能的Apache Kafka协议的Net实现.
    • Foundatio - 与内存,redis和azure实现的通用接口。
    • Kafunk - 来自Jet的F#Kafka客户端

    Reactive Programming反应式编程

    • Rx.NET - 反向扩展(Rx)是用于使用可观察序列和LINQ样式查询运算符组合异步和基于事件的程序的库
    • Dynamic Data - 集合的反向扩展(Rx)

    Scheduling计划

    • FluentScheduler - 任务调度程序具有流畅的界面,可以从您的应用程序运行自动化作业
    • NCrontab - 用于解析和格式化crontab表达式的类库,以及基于crontab计划计算出现的时间
    • QuartzNet - Quartz Enterprise Scheduler .NET
    • Hangfire - 在.NET应用程序中执行火灾忘记,延迟和重复执行任务的简单方法
    • Chroniton - 一个简单,完全可集成和可定制的库,用于在计划上运行强类型作业(任务)。

    SDK and API ClientsSDK和API客户端

    • AWS SDK - AWS SDK for .NET使.NET开发人员能够轻松地与Amazon Web Services协同工作
    • Azure PowerShell - 一组PowerShell cmdlet,供开发人员和管理员开发,部署和管理Microsoft Azure应用程序
    • Octokit.NET - 一个用于.NET的GitHub API客户端库
    • DropNet - Dropbox API的客户端库

    Search搜索

    • Elasticsearch .NET - Elasticsearch.Net & NEST
    • PlainElastic.Net - ElasticSearch的Plain .Net客户端
    • SolrNet - .Net的Solr客户端
    • SolrExpress) - 一个简单而轻量的查询.NET库,用于Solr,以受控,可构建和故障快速的方式
    • Lucene.net - Lucene.Net是Lucene搜索引擎库的一个端口,用C#编写,并针对.NET运行时用户

    Serialization序列化

    • Protobuf.NET - 协议缓冲区是Google在大量数据通信中使用的二进制序列化格式的名称
    • Json.NET - 受欢迎的高性能JSON框架.NET
    • ServiceStack.Text - servicestack.net中使用的JSON,JSV和CSV文本序列化程序
    • Msgpack-Cli -通用语言基础设施的MessagePack实现
    • Jil - 快速.NET JSON串行器,基于Sigil(由StackOverflow使用)
    • ProtoBuf - 从.proto规范生成协议缓冲区序列化的C#代码。
    • F# Data -用于访问XML,JSON,CSV和HTML文件(基于示例文档)和访问WorldBank数据的F#类提供程序
    • Bond -用于处理图形化数据的跨平台框架。 它支持跨语言de / serialization和强大的通用机制来有效地操纵数据。
    • Wire - 用于.NET框架的高性能多态串行器。
    • FileHelpers -免费和易于使用的.NET库从文件,字符串或流中的固定长度或分隔记录导入或导出数据.
    • FsPickler -一个用于.NET的快速多格式消息序列化程序
    • Migrant - 快速灵活的序列化框架可用于未装饰的类。

    State machines国家机器

    • Stateless - 直接在.NET代码中创建状态机和轻型状态机基于工作流
    • Automatonymous - .Net的状态机库 - 允许您编写流畅的状态机器
    • Appccelerate - State Machine - 一个强大的状态机器库 - 配置了流畅的api和同步和异步状态转换支持

    Static Site Generators静态站点生成器

    • FsBlog - 博客意识,静态网站生成使用F#
    • Pretzel - .NET平台的站点生成工具(然后是一些)
    • Sandra.Snow -Jekyll启发了.NET静态站点生成
    • Wyam - 一个易于使用,高度模块化和极其可配置的静态内容生成器

    Style Guide风格指南

    Template Engine模板引擎

    • RazorEngine - 基于微软Razor解析引擎的开源模板引擎
    • Nustache - 用于无逻辑模板的开源库
    • Stubble - 在.NET中修剪{{mustache}}模板。
    • DotLiquid - Ruby Liquid模板语言的C#端口
    • Mustache Sharp - 针对.NET的胡须文本模板引擎的扩展。

    Testing测试

    • AutoFixture - AutoFixture是.NET的开源框架,旨在最大限度地减少单元测试的“排列”阶段
    • BDDfy - BDDfy是最简单的BDD框架EVER!
    • Bogus - 一个简单而理智的假数据发生器C#。 基于并从着名的faker.js移植。
    • ExpressionToCode - 在断言中使用普通C#语法,其中包含失败消息中的表达式表达式和子表达式值。
    • FakeItEasy - The easy mocking library for .NET .NET的简单库https://fakeiteasy.github.io
    • Fluent Assertions - 一组.NET扩展方法,允许您更自然地指定TDD或BDD样式测试的预期结果
    • FluentAutomation - 用于UI自动化的简单流畅API
    • FsCheck - 随机测试.NET。
    • Fuchu - 一个用于F#的单元测试库,具有测试值,这使得DSL非常容易创建。
    • Machine.Specifications - Machine.Specifications(MSpec)是一个上下文/规范框架,可以消除语言噪音并简化测试。
    • Moq - 最受欢迎和友好的.NET框架
    • NBuilder - 快速生成测试对象
    • NSubstitute -一个友好的替代.NET框架
    • NUnit - 所有.Net语言的单元测试框架
    • Rhino Mocks - .NET的动态模拟框架
    • Shouldly - 应该是一个断言框架,其重点是在断言失败时提供很好的错误消息,而简单而简洁。
    • SpecFlow -将业务要求绑定到.Net代码。
    • xBehave.net - 基于xUnit.net的BDD / TDD框架,灵感来自于Gherkinhttp://xbehave.github.io
    • xUnit - xUnit.net是一个免费的,开源的,以社区为重点的.NET Framework单元测试工具
    • Canopy - Canopy是一个免费的开源F#Web自动化和测试框架

    Tools工具

    • Fiddler - 任何浏览器,系统或平台的免费网络调试代理
    • Open Live Writer - 博客作家,与WordPress,Blogger等组合。 al。 打开Live Writer可以轻松地编写,预览和发布到您的博客。 有关更多信息,请参阅http://openlivewriter.org .
    • CodeHub - CodeHub是在任何iOS设备上浏览和维护您的GitHub存储库的最佳方法!
    • ShareX - ShareX是一个免费的开放源代码程序,可让您捕获或记录屏幕的任何区域,并通过一键按下即可共享。 它还允许将图像,文本或其他类型的文件上传到超过80个支持的目的地,您可以选择。
    • Myrtille - 一个本机HTML4 / 5远程桌面协议客户端,用C#for .NET编写的HTTP网关
    • Opserver - 堆栈交换监控系统
    • CatLight - 构建TFS / Jenkins / Travis / Appveyor的状态通知。 基于.Net Core和Electron的跨平台桌面应用程序。 [免费] [专有]
    • Netling - 负载测试客户端,方便网络测试。 使用少量CPU或内存时,速度非常快。
    • Papercut - Papercut是一种基于开源(基于.NET的)测试电子邮件查看器,可在本地运行,内置SMTP服务器,旨在接收和通知测试电子邮件。
    • Visual Studio Uninstaller -卸载并清理Visual Studio的所有组件。
    • AnyStatus - 一个免费的开放源代码Visual Studio扩展,可以添加监控功能并将状态通知建立到Visual Studio。

    Trading贸易

    UI AutomationUI自动化

    • Managed Windows API - 内省和自动化第三方Windows / VC ++应用程序,无需其源代码。

    Visual Studio Plugins     Visual Studio插件

    • Web Essentials - Web Essentials扩展了Visual Studio,其中包含许多网页开发人员已经缺少多年的新功能
    • VsVIM - VIM在Visual Studio中
    • Nuget Package Manager - NuGet是Microsoft开发平台(包括.NET)的软件包管理器
    • SideWaffle -Visual Studio 2012/2013的项目模板集合,使任何Web开发人员的生活变得更加容易
    • Resharper - Visual Studio的开发人员生产力工具[$]
    • Refactoring Essentials - C#和VB.NET重构的开源扩展,包括代码最佳实践分析器.
    • CodeContracts - 用于.NET的CodeContracts工具的源代码
    • Git Diff Margin - 在Visual Studio边距和滚动条上显示当前编辑的文件的实时Git更改
    • Productivity Power Tools - 一组Visual Studio Professional(及以上版本)的扩展,可提高开发人员的生产力。
    • VSColorOutput - 构建,查找和调试输出窗口的颜色突出显示。 可以添加自定义匹配模式和颜色。
    • Developer Assistant - Visual Studio的开发人员助手使开发人员能够从Visual Studio IDE中查找和重新使用超过2100万个代码片段和代码示例项目。

    Web BrowsersWeb浏览器

    • CefSharp - 由Chromium提供的HTML5,CSS3和JS Web浏览器,适用于WinForms和WPF

    Web FrameworksWeb框架

    • ASP.NET MVC - ASP.NET是一个免费的Web框架,用于构建伟大的网站和应用程序
    • FubuMVC - 一个用于.NET的前端控件风格的MVC框架
    • NancyFx - 轻量级,低成本的框架,用于在.Net和Mono上构建基于HTTP的服务
    • IISNode - 主机NodeJS应用程序在IIS中
    • Suave.IO - 框架/图书馆/网络服务器,让您在完成您的项目提前完成您的项目时,看到您在[F#]中编写的美丽代码,让您哭泣。

    Web ServersWeb服务器

    • Kestrel - 基于libuv的ASP.NET Core的Web服务器
    • EmbedIO - Web服务器建立在Mono和跨平台上
    • XSP - Mono的ASP.NET托管服务器。 该模块包括一个Apache模块,一个可以连接到其他Web服务器的FastCGI模块,以及用于测试的独立服务器(类似于Microsoft的Cassini)

    WebSocket

    • Fleck - Fleck是C#中的WebSocket服务器实现。 从掘金项目分支
    • SignalR - 用于ASP.NET开发人员的库,使您的应用程序添加实时Web功能变得非常简单
    • SuperSocket - SuperSocket是一个轻量级的可扩展套接字应用程序框架
    • Websocket-Sharp - WebSocket协议客户端和服务器的C#实现
    • WebSocket4NET - 用于.NET 2.0+,Xamarin,Mono,Silverlight,Windows Phone和WinRT的WebSocket客户端
    • Crossertech - 提供了一整套工具,您可以在Microsoft.NET平台上构建实时应用程序等等。
    • WampSharp - Web应用程序消息传递协议的C#实现 - 一种通过WebSockets提供远程过程调用和发布/订阅的消息传递模式的协议。
    • NetGain - 一个高性能的websocket服务器库供电堆栈溢出。
    • Websockets.PCL - WebSockets.PCL是一个便携式类库,配置文件259,C#WebSocket实现。

    Windows ServicesWindows服务

    • TopShelf - 使用.NET构建Windows服务的简单服务托管框架

    Other Lists其他名单

    更多资源

    原文:https://github.com/quozd/awesome-dotnet

    微软官方开源

    官网:https://github.com/Microsoft/dotnet

    .NET开源基金项目

    官网:https://github.com/dotnet/home

    Brian Lagunas & Brian Noyes

    Cake

    Couchbase

    Dominick Baier & Brock Allen

    Force.com

    Jb Evain

    Microsoft

    Mono Project

    Orchard

    Protobuild

    Umbraco

    WiX Toolset

    Xamarin

    xUnit.net

    园友补充

    WeiXinMPSDK:一个集成了微信所有API的开源项目。官网(https://github.com/JeffreySu/WeiXinMPSDK
    Expression Evaluator:动态计算表达式。官网(https://github.com/RupertAvery/csharpeval
    PDFsharp & MigraDoc:PDF操作。官网(http://www.pdfsharp.com/PDFsharp/
    DiffPlex:文件差异对比,类似Github版本控制。官网(http://diffplex.codeplex.com/
    DynamicJson:像Javascript一样操作Json。官网(http://dynamicjson.codeplex.com/
    Glimpse:网站性能监听,支持客户端,服务器端监听,非常好用,开发必备。官网(http://getglimpse.com/
    Sqlsugar:ORM框架,性能比Dapper,EF还快。官网(https://github.com/sunkaixuan/SqlSugar

    百小僧 提供

    ORM 
    PetePoco 简单,快速易用的微型ORM工具 官网
    NPoco 在PetaPoco上做的扩展 官网
    应用
    nopcommerce 电商平台 官网

    James-yu 提供

    SQLite:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 官网

    神樹桜乃 提供

    持续集成 jenkins:是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署

    半生铭熙 提供

    DiffPlex:文件差异对比,类似Github版本控制。官网(http://diffplex.codeplex.com/)链接已更新到Github

    qust_青岛 提供

    JqGridForMvc 快速开发必备利器,https://github.com/halower/JqGridForMvc

    闪电风 提供

    StackExchange的通用redis客户端

    展开全文
  • javascript编译器 介绍 ( ...Transpilers, or source-to-source compilers, are tools that read source code written in one programming language, and produce the equivalent code in another language. ...

    javascript编译器

    介绍 ( Introduction )

    Transpilers, or source-to-source compilers, are tools that read source code written in one programming language, and produce the equivalent code in another language. Languages you write that transpile to JavaScript are often called compile-to-JS languages, and are said to target JavaScript.

    Transpiler源到源编译器是读取以一种编程语言编写的源代码,并以另一种语言生成等效代码的工具。 您编写的可转换为JavaScript的语言通常称为“ 编译为JS”语言,并且据说是针对 JavaScript的。

    Oh, and, even though people tend to use "compile/r" and "transpile/r" interchangeably, I'll prefer the latter term in this article.

    哦,即使人们倾向于交替使用“ compile / r”和“ transpile / r”,在本文中我还是更喜欢后者。

    You've probably heard about CoffeeScript and TypeScript. CoffeeScript provides syntactic sugar for a number of features not yet native to JavaScript, while discouraging some of JavaScript's "bad parts". TypeScript is more drastic, adding classical object-oriented semantics to a fundamentally different language.

    您可能已经听说过CoffeeScriptTypeScript 。 CoffeeScript为JavaScript尚未提供的许多功能提供了语法糖,同时不鼓励使用JavaScript的“不良部分” 。 TypeScript更加激进,将经典的面向对象的语义添加到根本不同的语言中

    Anything you can write in JavaScript, you can write in CoffeeScript or TypeScript.

    您可以使用JavaScript编写的任何内容,都可以使用CoffeeScript或TypeScript编写。

    "use strict";
    
    // Good 'ol JS
    function printSecret ( secret ) {
        console.log(`${secret}. But don't tell anyone.`);
    }
    
    printSecret("I don't like CoffeeScript"); 
    "use strict"
    
    # CoffeeScript
    printSecret (secret) =>
        console.log '#{secret}. But don't tell anyone.'
    
    printSecret "I don't like JavaScript." 
    "use strict";
    
    // TypeScript -- JavaScript, with types and stuff
    function printSecret ( secret : string ) {
        console.log("${secret}. But don't tell anyone.");
    }
    
    printSecret("I don't like CoffeeScript.");

    Trouble is, JavaScript environments only understand . . . Well, JavaScript. Trying those last two examples in your console will throw errors. As a matter of fact, if you try that pure JavaScript example in an older browser, you'll still get an error. Template literals still don't have reliable browser support.

    麻烦的是,JavaScript环境只能理解。 。 。 好吧,JavaScript。 在控制台中尝试最后两个示例将引发错误。 实际上,如果您在较旧的浏览器中尝试该纯JavaScript示例,仍然会收到错误消息。 模板文字仍然没有可靠的浏览器支持。

    That's where transpilers come in: They read CoffeeScript, TypeScript, and ES2015, and spit out JavaScript guaranteed to work anywhere.

    那就是编译器出现的地方:他们阅读CoffeeScript,TypeScript和ES2015,并吐出保证可以在任何地方使用JavaScript。

    捍卫转运者 ( In Defense of Transpilers )

    If your workflow doesn't already include a transpiler, you might wonder why you'd even bother. Why learn new syntax and pick up new tools if all we get at the end of the day is the JavaScript we could have written in the first place?

    如果您的工作流尚未包含转译器,您可能会想知道为什么还要打扰。 如果我们最终获得的只是我们本来可以编写JavaScript,为什么还要学习新的语法并使用新的工具?

    In the case of languages that target JavaScript, it's largely a matter of preference or background. Writing in a language that "thinks" the way you do makes you more productive. People with backgrounds in OOP often like TypeScript because it's familiar territory. Pythonistas like CoffeeScript. Clojurists write ClojureScript. You get the idea.

    对于以JavaScript为目标的语言,很大程度上取决于偏好或背景。 用一种“思考”您的工作方式的语言进行写作可以使您的工作效率更高。 具有OOP背景的人们经常喜欢TypeScript,因为它是熟悉的领域。 Pythonista喜欢CoffeeScript。 Clojurist编写ClojureScript。 你明白了。

    But the rest of us, who are perfectly fine with writing plain JavaScript, still use transpilers, because they're the only reliable way to use features from ES2015 and beyond.

    但是我们其余的人,即使可以编写纯JavaScript,也非常满意,但他们仍然使用编译器,因为它们是使用ES2015及更高版本中的功能的唯一可靠方法。

    明天JavaScript,今天 (Tomorrow's JavaScript, Today)

    Anyone who's had to deal with browser compatibility issues before knows its not as simple as writing JavaScript that runs everywhere. That's because every browser uses a different JavaScript engine: Chrome runs V8, Firefox runs SpiderMonkey, and Interet Explorer, Chakra. Each has different performance characteristics, each implements a different subset of ES2015 features, and each is approaching full compliance with the spec at different rates.

    曾经不得不处理浏览器兼容性问题的任何人都知道它并不像编写可在任何地方运行JavaScript那样简单。 这是因为每种浏览器都使用不同JavaScript引擎: Chrome运行V8Firefox运行SpiderMonkey ,以及Interet Explorer Chakra 。 每个都有不同的性能特征,每个实现不同的ES2015功能子集,并且每个都以不同的速率完全符合规范。

    That means that, while our template literal example works just fine for those of you running the most recent Chrome, Firefox, or Safari, it won't work for people running older versions. Or for anyone using Internet Explorer . . . Obviously.

    这意味着,虽然我们的模板文字示例对运行最新版本的Chrome,Firefox或Safari的用户来说效果很好,但不适用于运行较旧版本的用户。 或适用于使用Internet Explorer的任何人。 。 。 明显。

    The ES6 compatibility table shows that, while we're clearly making progress, it's not quite time to write ES2015 directly. Instead, we write our source in ES2015, and let a transpiler translate it to vanilla ES5 that works in every browser. If you need to support browsers from the last millennium, you can even compile down to ES3.

    ES6兼容性表显示,尽管我们正在取得明显进展,但现在还不是直接编写ES2015的时间。 取而代之的是,我们在ES2015中编写源代码,然后让编译器将其翻译为适用于所有浏览器的普通ES5。 如果您需要支持上个千年的浏览器,甚至可以编译到ES3。

    This way, you can use any feature supported by your transpiler of choice, right now, and know that it'll work for everyone who hits your site -- from the public employee with no choice but to use IE8 to the hacker types running a FireFox nightly.

    这样,您就可以使用您所选择的transpiler支持, 现在的任何功能,并知道它会为大家谁击中了你的网站的工作-从政府雇员没有选择,只能使用IE8来运行黑客类型FireFox每晚。

    明天JavaScript,一路走来 (Tomorrow's JavaScript, Along the Way)

    Transpilers also play an important role in guiding the decisions of the TC39 committee, which is the group in charge of designing the ECMAScript standard.

    编译器还在指导TC39委员会的决策中发挥重要作用,TC39委员会是负责设计ECMAScript标准的小组。

    For one, transpilers can contribute directly to the inclusion of a feature in the standard. For a potential feature to move from Stage 1 (Proposal) to Stage 2 (Draft):

    首先,翻译者可以直接为标准中的功能添加做出贡献。 要使潜在功能从第1阶段(建议)移至第2阶段(草案),请执行以下操作:

    Two experimental implementations of the feature are needed, but one of them can be in a transpiler such as Babel.

    需要对该功能进行两个实验性的实现,但是其中一个可以在诸如Babel的编译器中进行。

    The rest of Dr Rauschmayer's overview of the inclusion process is on his 2ality blog..

    Rauschmayer博士对纳入过程的概述的其余部分在他的2ality博客上。

    Probably more important than this contribution is that feedback from users and implementers of transpilers like Babel or Traceur help TC39 iterate on syntax and proposals. This comes up often during TC39 meetings: If you read every line of the TC39 Meeting Notes -- or, you know, just rgrep -i them -- you'll find that Babel was mentioned 36 times, and spot that the conclusion of the March 25, 2015 meeting on This-binding syntax was: "Get more feedback from users of Babel"!

    比这种贡献更重要的是,来自翻译者(例如BabelTraceur)的用户和实施者的反馈帮助TC39迭代了语法和建议。 这通常在TC39会议期间出现:如果您阅读了TC39会议记录的每一行-或者,您知道只是rgrep -i他们-您会发现Babel被提及了36次,并且发现2015年3月25日,关于这种绑定语法的会议是:“从Babel用户那里获得更多反馈”!

    TC39 Meeting Notes: "Get more feedback from users of Babel!

    To recap, transpilers:

    回顾一下,转译者:

    1. Allow us to write compile-to-JavaScript languages, like CoffeeScript, TypeScript, or ClojureScript;

      让我们编写JavaScript编译语言,例如CoffeeScript,TypeScript或ClojureScript;
    2. Let us use new and potential JavaScript features, reliably; and

      让我们可靠地使用新的和潜在JavaScript功能; 和
    3. Contribute to the development of the ECMAScript specification.

      有助于ECMAScript规范的开发。

    Now that we know everything we need to know about what transpilers are, let's dig into how to use them.

    既然我们知道了什么是编译器,我们就需要了解所有内容,接下来让我们深入研究如何使用它们。

    使用编译器 ( Using Transpilers )

    There are a number of ES2015-to-ES5 transpilers out there, but I'll be focusing on Babel.

    有很多ES2015到ES5的编译器,但我将重点介绍Babel

    In this section, we'll cover:

    在本节中,我们将介绍:

    1. Comparing ES2015 source to transpiled output;

      比较ES2015源代码与转换后的输出;
    2. Setting up the Babel command-line interface (CLI); and

      设置Babel命令行界面(CLI); 和
    3. A look at how build toolks like Webpack, JSPM, and Babelify streamline the process.

      看一下Webpack,JSPM和Babelify之类的构建工具如何简化该过程。

    我的来源就是你的来源 (My Source Is Your Source)

    To get started, head over to Babel's live transpiler. Copy the code below into the JavaScript editor (left box):

    首先,请转到Babel的实时翻译机 。 将以下代码复制到JavaScript编辑器中(左框):

    "use strict";
    
    class Planet {
    
      constructor (mass, moons) {
        this.mass  = mass;
        this.moons = moons || 0;
      }
    
      reportMoons () {
        console.log(`I have ${this.moons} moons.`)
      }
    
    }
    
    // Yeah, Jupiter really does have (at least) 67 moons.
    const jupiter = new Planet('Pretty Big', 67);
    jupiter.reportMoons();

    Take a look at the output (reproduced below, for convenience). You'll notice that there are no ES2015 features. const variables get converted to carefully scoped var declarations; class is converted to an old-school function constructor; and the template string desugars to simple string concatenation.

    看一下输出(为方便起见,以下复制)。 您会注意到没有 ES2015功能。 const变量将转换为仔细定义的var声明; class转换为老式函数构造器; 并将模板字符串还原为简单的字符串连接。

    // Everything below is Babel's output.
    'use strict';
    
    var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
    
    function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
    
    var Planet = function () {
      function Planet(mass, moons) {
        _classCallCheck(this, Planet);
    
        this.mass = mass;
        this.moons = moons || 0;
      }
    
      _createClass(Planet, [{
        key: 'reportMoons',
        value: function reportMoons() {
          console.log('I have ' + this.moons + ' moons.');
        }
      }]);
    
      return Planet;
    }();

    These are features the language has had from day one. Using them to emulate features from ES2015 is precisely how they let us use non-standardized features now, and to do so safely, to boot.

    这些是语言从一开始就具有的功能。 使用它们来模拟ES2015中的功能正是它们如何让我们现在使用非标准化功能并安全地进行启动。

    As a fun little note, a catch clause creates a scope in JavaScript. This behavior was standardized all the way back in ES3. Traceur took advantage of this for some time to emulate block-scoping, producing something like this:

    有趣的一点是, catch子句在JavaScript中创建作用域。 早在ES3中就一直对此行为进行了标准化。 Traceur在一段时间内利用了这一点来模拟块作用域,从而产生如下内容:

    "use strict";
    
    // ES2015
    {
        let name = "Never woulda thunk.";
    }
    
    // ES3/5 output
    try { throw void 0; } catch(name) {
        name = "Never woulda thunk.";
        console.log(name);
    }

    How's that for a polyfill?

    填充料怎么样?

    设置Babel CLI (Setting Up the Babel CLI)

    The live REPL is slick, but writing your entire codebase that way would suck. Let's save ourselves some work and set up the Babel CLI.

    实时REPL很漂亮,但是用这种方式编写整个代码库会很麻烦。 让我们节省一些工作并设置Babel CLI。

    To get started:

    开始:

    1. Create a directory somewhere;

      在某处创建目录;
    2. Initialize it as an NPM project;

      将其初始化为NPM项目;
    3. Install the Babel tool, along with the presets and plugins we'll be using; and

      安装Babel工具,以及我们将要使用的预设和插件; 和
    4. Configure Babel to use those presets and plugins.

      配置Babel以使用这些预设和插件。
    # This moves to your home directory to create the folder. 
    # If you don't want it there, cd somewhere else.
    cd && mkdir babel_example && cd $_
    npm init
    # Hit ENTER a bunch of times . . . 
    npm install --save-dev babel-cli babel-preset-es2015 babel-plugin-transform-async-to-generator  

    This will install the Babel CLI (babel-cli); a collection of plugins enabling all the ES2015 features that Babel supports (babel-preset-es2015); and a plugin allowing you to use the ES7 proposal, Async functions (babel-plugin-transform-async-to-generator).

    这将安装Babel CLI( babel-cli ); 一系列插件,支持Babel支持的所有ES2015功能( babel-preset-es2015 ); 还有一个插件,可让您使用ES7提案, 异步功能babel-plugin-transform-async-to-generator )。

    To run Babel, you simply type babel <FILENAME>. But before we do that, we need to tell it what plugins to use. Babel looks for this information in a file called .babelrc, in the top level of your NPM project.

    要运行Babel,只需键入babel <FILENAME> 。 但是在我们这样做之前,我们需要告诉它要使用哪些插件。 Babel在NPM项目的顶层的名为.babelrc的文件中查找此信息。

    {
        "presets": ["es2015"],
        "plugins": ["transform-async-to-generator"]
    }

    Now, copy the snippet from above with the Planet class into an index.js, and run babel index.js --out-file index.transpiled.js --source-maps. This will create a transpiled version of index.js, in index.transpiled.js, and a separate sourcemap file, index.transpiled.js.map. A source map is a file that tells the browser which lines of your transpiled code correspond to which lines of your original source, so you can debug index.js directly.

    现在,从上方将Planet类的代码片段复制到index.js ,然后运行babel index.js --out-file index.transpiled.js --source-maps 。 这将创建一个transpiled版本index.js ,在index.transpiled.js ,和一个单独的文件sourcemap, index.transpiled.js.map源映射是一个文件,该文件告诉浏览器转码的哪些行与原始源的哪些行相对应,因此您可以直接调试index.js

    Babel's output in index.transpiled.js

    If you want to transpile your file every time you save changes, you can run:

    如果要在每次保存更改时转换文件,则可以运行:

    babel index.js --out-file index.transpiled.js --source-maps --watch

    babel index.js --out-file index.transpiled.js --source-maps --watch

    制作工具 ( Build Tools )

    There are several other options you can use with the Babel CLI. But, as you can probably imagine, figuring out how to configure them, on top of whatever other tools you're using, can become unwieldly.

    Babel CLI可以使用其他几个选项 。 但是,您可能会想到,在您正在使用的任何其他工具之上弄清楚如何配置它们可能会变得毫无用处。

    For us, running babel --watch is enough. But for any nontrivial project, you'll have a number of build steps: Transpiling, minifiying, organizing your outputs for distribution, determining what needs to be updated, optimizing images . . . It's as much of a nightmare as it sounds like.

    对我们来说,运行babel --watch就足够了。 但是对于任何不平凡的项目,您将有许多构建步骤:编译,最小化,组织输出以进行分发,确定需要更新的内容,优化图像。 。 。 听起来就像一场噩梦。

    If you use the CLI directly, you'd have to run through each step manually, or script the process yourself. That second option is definitely viable, but it can be:

    如果直接使用CLI,则必须手动执行每个步骤,或者自己编写脚本。 第二种选择绝对是可行的 ,但可以是:

    1. Brittle;

      脆;
    2. Difficult for teams; and

      团队困难; 和
    3. Unportable across platforms.

      跨平台不可移植。

    This is where build tools come in. Grunt and Gulp are popular systems that streamline orchestration of the build process. Bundlers and module loaders like Webpack, JSPM, and Browserify -- which you can read about in another article of mine -- take care of transpilation alongside all of the other magic they work.

    这就是构建工具的用武之地。GruntGulp是流行的系统,可简化构建流程的编排。 捆绑程序和模块加载程序(例如WebpackJSPMBrowserify) (您可以在我的另一篇文章中阅读)会与它们工作的所有其他魔术一起处理转堆。

    I've used Browserify to transpile tests written in CoffeeScript to plain JS; delete the output after the tests run; and bundle my code with Babel if they all pass; and put everything in the right place, with source maps, along the way. That's all possible using the command-line tools directly, but it's brittle.

    我已经使用Browserify将以CoffeeScript编写的测试转换为纯JS。 测试运行后删除输出; 并把我的代码和Babel捆绑在一起; 并一路将所有内容和原始地图放在正确的位置。 可以直接使用命令行工具来完成所有操作,但这很脆弱。

    You can trust me on that -- I used to use bash script for this. That Linux diehard coming back to bite me. And if you ever find yourself needing to load multiple module formats or wanting to experiment with hot module replacement, you don't have much choice but to turn to a build system.

    您可以相信我-我曾经为此使用bash脚本。 那个Linux顽固派回来咬我。 而且,如果您发现自己需要加载多种模块格式或想尝试热模块更换 ,则别无选择,只能求助于构建系统。

    Unless you like to roll your own glue code, of course.

    当然,除非您喜欢自己编写胶水代码。

    结论 ( Conclusion )

    It's hard to get away from Transpilers: You need them whether you plan to write a language that compiles to JavaScript, or simply use ES015 reliably. We saw that feedback from people in that latter group is an important source of guidance for the TC39 committee in its decisions about the future direction of JavaScript, as well.

    很难摆脱Transpilers:无论您打算编写要编译为JavaScript的语言,还是可靠地使用ES015,您都需要它们。 我们看到,来自后者的人们的反馈意见对于TC39委员会在决定JavaScript的未来方向方面也具有重要的指导意义。

    We took a look at using the Babel CLI to transpile ES2015 with source maps, and learned about tools that streamline transpilation in more complicated projects.

    我们了解了如何使用Babel CLI将ES2015与源映射一起进行转换,并了解了可简化更复杂项目中的转换的工具。

    Jame Kyle's Babel Handbook is a go-to for everything Babel, and if you're interested in Webpack, read the How-To before wading through its . . . Erm, "suboptimal" documentation.

    Jame Kyle的《 Babel手册》是Babel的入门指南,如果您对Webpack感兴趣,请在仔细阅读How-To之前先阅读一下。 。 。 Erm,“次优”文档。

    Feel free to ask question in the comments, or shoot them to me on Twitter (@PelekeS) -- I'll be sure to get back to everyone individually.

    随时在评论中提问,或在Twitter( @PelekeS上将它们枪杀给我-我一定会单独回信给每个人。

    翻译自: https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them

    javascript编译器

    展开全文
  • JS Superlanguage & Transpilers JS Frameworks Mobile JS Frameworks Web Components Ecosystem Build/Bundler Tools Browsers [1994] Netscape Navigator http://browser.netscape.com/ [1995] Internet Explorer...
  • discuz支持反对In this post I'm going to examine the case for (and perhaps against?) one of the new features coming in JavaScript ES6: the let keyword. let enables a new form of scoping not previously ...
  • ES6_Typescript-源码

    2021-02-18 12:42:18
    Transpilers:ctrl + shft B(选择watch:tsconfig.json以运行将.ts转换为.js文件的Transpilers)在Transpilers中,ES2015将Transpile(使用Traceur / Babel / Typescript)到ES5,以便在所有浏览器中运行 ...
  • Build tools, package managers, loaders, bundlers, linters, compilers, transpilers, typecheckers – how do you make sense of it all? In this book, we will build a simple API and React application from...
  • 指南针聚合 适用于MongoDB聚合管道生成器的Compass插件。 代码之旅 src/components/aggregations主要导出是连接的组件 src/modules/是执行操作的地方 ...模态插件,将连接到bson-transpilers 这两个插
  • Electron in Action

    2018-10-08 10:20:50
    Chapter 11 Using Transpilers And Frameworks Chapter 12 Persisting User Data And Using Native Node.Js Modules Chapter 13 Testing Applications With Spectron Part 3 Deploying Electron applications ...
  • 手把手搭建一个属于自己的在线 IDE

    千次阅读 2020-10-15 09:17:00
    Preset 具体配置示例如下: import babelTranspiler from "../../transpilers/babel"; ... const preset = new Preset( "create-react-app", ["web.js", "js", "json", "web.jsx", "jsx", "ts", "tsx"], { hasDotEnv...
  • The following is a short extract from our new book, JavaScript: Novice to Ninja, 2nd Edition, written by Darren Jones. It’s the ultimate beginner’s guide to JavaScript. SitePoint Premium members get...
  • Z龙 ZDragon是一种架构作为代码工具。 该工具仍处于早期测试阶段,如果没有对应用程序和代码的明确... ZDragon.Transpilers(用于以下目的的编译器) PlantUml C4组件 PlantUml类图 Html 甘特图 打字稿 JsonSchema
  • 转自: https://github.com/airbnb/javascript/blob/master/README.md Airbnb JavaScript Style Guide() { A mostly reasonable approach to JavaScript Other Style Guides ES5 ... Sas...
  • s becoming more common for devs to use ES6 transpilers, and our hard coupling with gnode prevents others (like babel) from being used easily (#445) - Some bugs have been really tricky to pin down, (#...
  • DotNet 资源大全中文版

    2018-08-15 11:28:00
    Compilers, Transpilers and Languages编译器,透明机和语言 Compression压缩 Continuous Integration持续整合 Cryptography密码学 Database数据库 Database Drivers数据库驱动程序 Datetime具体时间 ...
  • net新的库相关的资源

    2018-02-25 09:45:28
    Compilers, Transpilers and Languages编译器,透明机和语言 Compression压缩 Continuous Integration持续整合 Cryptography密码学 Database数据库 Database Drivers数据库驱动程序 Datetime具体时间 Decompilation...
  • What is the difference between ES5, ES2015 (formerly known as ES6), and TypeScript? Which should we learn and use? First, let’s create a foundation for our discussion for each of these....
  • Javascript是一种日益增长的语言,特别是现在ECMAScript规范按照每年的发布时间表发布。伴随着这门语言的规模化和快速发展,掌握JS(不仅仅是jQuery)的重要性,变得更加重要。 这不是一篇自称是 JS 开发者知识...
  • Compilers, Transpilers and Languages Compression Continuous Integration Cryptography Database Database Drivers Datetime Decompilation Deployment DirectX Distributed Computing DLR...
  • However, <a href="https://github.com/fuse-box/fuse-box/blob/master/src/plugins/js-transpilers/BabelPlugin.ts#L101">here</a> BabelPlugin explicitly requires <code>babel-core</code>. I want to discuss ...
  • Switch to ES6

    2020-12-09 08:15:31
    <p>Now that ES 6 is official, we can begin to think about switching to it, but none of the browsers or transpilers support all the features, so it's probably a task for 2016. <p>...
  • JS Transpilers 如果您想转换静态js资产(在assets/js/ ),则可以这样做。 只需在配置文件中设置babel对象。 这使用此处指定的相同babel配置: : { " babel " : { " presets " : [ " es2015 " ] } } 还记得...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 274
精华内容 109
热门标签
关键字:

transpilers