标签归档:nodejs

Botframework-sdk-BOT框架为构建对话应用程序提供了最全面的体验

BOT框架为构建对话应用程序提供了最全面的体验

使用Bot Framework SDK,开发人员可以构建与自由格式或具有引导交互的机器人进行交互,包括使用包含文本、图像和操作按钮的简单文本或富卡

开发人员可以使用他们喜欢的编程语言(包括C#、JS、Python和Java)建模和构建复杂的对话,也可以使用Bot Framework Composer,这是一个开源的可视化创作画布,供开发人员和多学科团队设计和构建对话体验,包括语言理解、QNA Maker和BOT回复的复杂组合(Language Generation)

签出 Bot Framework ecosystem部分,了解与Bot Framework SDK相关的其他工具和服务的更多信息

快速链接

|Bot Framework Composer|C# Repo|JS Repo|Python Repo|Java Repo|BF CLI|

BOT框架SDK v4

Bot Framework SDK v4是一个open source SDK使开发人员能够使用他们最喜欢的编程语言建模和构建复杂的对话

C# JS python Java语言
稳定释放 packages packages packages packages
文档 docs docs docs docs
样本 .NET CoreWebAPI Node.jsTypeScriptes6 Python Java

通道和适配器

有两种方式可以将你的机器人连接到客户端体验:

  • Azure Bot服务频道-通过Azure Bot服务提供语言和SDK独立支持
  • BOT框架SDK适配器-每种语言适配器组件
客户端 蔚蓝通道 C#适配器 JS适配器 Python适配器
微软团队 Azure
直达线路 Azure
网络聊天 Azure Botkit
Skype Azure
电子邮件 Azure
Facebook Azure SDK Botkit
松弛 Azure SDK Botkit SDK
Kik Azure
电报 Azure
线路 Azure
GroupMe Azure
Twilio(短信) Azure SDK Botkit
Alexa技能 Community Community
谷歌行动 Community Community
Google Hangout Botkit
WebEx SDK Botkit
WhatsApp(Infobip) Community
缩放 Community
RingCentral Community
科尔塔纳 Azure
控制台 Community

社区开源项目

以下开放源码社区提供了各种组件来扩展您的bot应用程序,包括适配器、识别器、对话框和中间件

C# JavaScript python Java语言
Bot Framework Community C# JavaScript Python Java
Botkit JavaScript

问题和帮助

如果您对Bot Framework SDK或使用Azure Bot服务有任何疑问,我们鼓励您联系社区和Azure Bot服务开发团队寻求帮助

查看所有可用的支持选项here

问题和功能请求

我们在不同的位置跟踪Bot Framework SDK、工具和Azure Bot服务的功能问题和功能需求。如果您发现问题或有功能请求,请将问题提交到以下存储库

项目 描述 链接
SDK v4.NET 用于.NET、连接器、中间件、对话框、提示、Luis和QNA的核心bot运行时 File an issue
SDK v4 JavaScript 用于TypeScript/Javascript、连接器、中间件、对话框、提示符、Luis和QNA的核心bot运行时 File an issue
SDK v4 Python Python、连接器、中间件、对话框、提示、Luis和QNA的核心bot运行时 File an issue
SDK v4 Java 面向Java、连接器、中间件、对话框、提示、Luis和QNA的核心bot运行时 File an issue
BOT框架组合器 BOT框架合成器电子和Web应用程序 File an issue
BOT框架CLI BOT框架cli工具 File an issue
网络聊天 BOT框架网络聊天工具 File an issue

以前的版本

BOT框架生态系统

BOT框架组合器

Bot Framework Composer是一个集成开发工具,供开发人员和多学科团队使用Microsoft Bot Framework构建机器人和对话体验。在此工具中,您将找到构建复杂对话体验所需的一切

博基特

Botkit是一个开发人员工具和SDK,用于为主要消息传递平台构建聊天机器人、应用程序和自定义集成。僵尸机器人hear()触发器,ask()问题和say()回复。开发人员可以使用此语法构建对话框-现在可与最新版本的Bot Framework SDK交叉兼容

此外,botkit还附带了6个平台适配器,允许Javascript bot应用程序直接与消息传递平台通信:SlackWebex TeamsGoogle HangoutsFacebook MessengerTwilio,以及Web chat

botkit是Microsoft Bot Framework的一部分,在MIT Open Source license

BOT框架虚拟助手解决方案加速器

这个Bot Framework Solutions repository是世界上最大的Virtual Assistant Solution Accelerator,它提供了一组模板、解决方案加速器和技能,以帮助构建复杂的对话体验

  • Virtual Assistant.客户和合作伙伴非常需要为他们的品牌量身定做一个对话助手,为他们的用户量身定做,并且在各种画布和设备上都可以使用。

    这汇集了所有支持组件,并极大地简化了新BOT项目的创建,包括:基本对话意图、调度集成、QNA Maker、Application Insight和自动化部署

  • Skills.一个可重复使用的会话技能构建块库,使您可以向Bot添加功能。我们目前提供:日历,电子邮件,任务,兴趣点,汽车,天气和新闻技能。技能包括以源代码形式交付的Luis模型、对话框和集成代码,以便根据需要进行自定义和扩展
  • Analytics.使用Bot Framework Analytics解决方案获得对您的机器人的健康状况和行为的重要见解,其中包括:示例Application Insights查询和Power BI仪表板,以全面了解您的机器人与用户的对话

Azure Bot服务

Azure Bot服务使您能够托管完全拥有和控制您的数据的企业级智能机器人。开发者可以在Skype、微软团队、Cortana、网络聊天等平台上注册机器人并将其连接到用户。[Docs]

  • 直通JS客户端:如果您希望在Azure Bot服务中使用Direct Line频道,并且没有使用Webchat客户端,则可以在您的自定义应用程序中使用Direct Line JS客户端。[Readme]

  • 直接线路语音信道:我们正在将Bot框架和Microsoft的语音服务结合在一起,以提供一个通道,支持从客户端到BOT应用程序的双向流式语音和文本。若要注册,请向您的Azure Bot服务添加“Direct Line Speech”频道
  • 为您的Bot-Direct Line App服务扩展提供更好的隔离:Direct Line App Service Extension可以作为VNET的一部分进行部署,使IT管理员能够更好地控制会话流量,并由于减少了跳数而改善了会话延迟。单击此处开始使用Direct Line App Service Extension。VNET允许您在Azure中创建自己的私有空间,并且对您的云网络至关重要,因为它提供隔离、分段和其他主要优势

BOT框架仿真器

这个Bot Framework Emulator是一个跨平台的桌面应用程序,允许bot开发人员测试和调试使用Bot Framework SDK构建的bot。可以使用Bot Framework Emulator测试在计算机上本地运行的Bot或连接到远程运行的Bot。[Download latest|Docs]

BOT框架网络聊天

机器人框架Web Chat是Azure Bot服务的一个高度可自定义的基于Web的客户端聊天控件,它为用户提供了在网页中直接与你的机器人交互的功能。[Stable release|Docs|Samples]

BOT框架CLI

Bot Framework CLI工具托管open source跨平台Bot Framework CLI工具,旨在支持构建强大的端到端开发工作流。Bot Framework CLI工具取代了legacy standalone tools用于管理僵尸程序和相关服务。BF CLI将跨平台工具集合聚合到一个紧密一致的界面中

相关服务

语言理解

一种基于机器学习的服务,用于构建自然语言体验。快速创建可持续改进的企业就绪型定制模型。语言理解服务(Language Underming Service,Luis)允许您的应用程序用他们自己的话来理解他们想要的东西。[Docs|Add language understanding to your bot]

QNA制造商

QnA Maker是一种基于云的API服务,可在您的数据上创建会话问答层。使用QNA Maker,您可以在几分钟内根据FAQ URL、结构化文档、产品手册或编辑内容构建、培训和发布一个简单的问答机器人。[Docs|Add qnamaker to your bot]

派单

调度工具允许您构建语言模型,允许您在不同的组件(如QNA、Luis和自定义代码)之间进行调度。[Readme]

语音服务

语音服务将音频转换为文本,通过统一的语音服务进行语音翻译和文本到语音的转换。有了语音服务,你可以将语音集成到你的机器人中,创建自定义唤醒词,并用多种语言创作。[Docs]

适配卡

Adaptive Cards是一个开放标准,供开发人员以通用且一致的方式交换卡内容,并被Bot Framework开发人员用来创建出色的跨通道转换体验

  • 开放式框架,原生性能-简单的开放式卡格式支持共享工具的生态系统、应用程序之间的无缝集成以及任何设备上的本机跨平台性能
  • 从第一天起启用语音-我们生活在一个令人兴奋的时代,在这个时代,用户可以与他们的设备交谈。适配卡拥抱了这一新世界,并从头开始设计以支持这些新体验

贡献

请参阅我们的contributing guidelines

报告安全问题

安全问题和错误应通过电子邮件私下报告给Microsoft安全响应中心(MSRC),地址为secure@microsoft.com您应该会在24小时内收到回复。如果您由于某些原因没有收到您的邮件,请通过电子邮件跟进,以确保我们收到您的原始邮件。更多信息,包括MSRC PGP密钥,可以在Security TechCenter

版权所有(C)Microsoft Corporation。版权所有

Social-analyzer-API、CLI和Web应用程序,用于分析和查找跨社交媒体/网站的个人资料

Social Analyzer-API、CLI和Web应用程序,用于分析和查找一个人在+800个社交媒体/网站上的个人资料。它包括不同的字符串分析和检测模块,您可以选择在调查过程中使用哪种模块组合

检测模块利用基于不同检测技术的评级机制,该机制产生从0到100(否-可能-是)的率值。本模块旨在减少误报,并在下面的文档中进行了说明Wiki链接

从该OSINT工具分析和公开提取的信息可以帮助调查与可疑或恶意活动相关的配置文件,例如cyberbullyingcybergroomingcyberstalking,以及spreading misinformation

这个项目是“目前一些执法机构在资源有限的国家使用”

Social Analyzer is in a league of its own and is a very impressive tool that I thoroughly recommend for Digital Investigators and OSINT practitioners-由Joseph Jones, Founder of Strategy Nord, Unita Insight and OS2INT

更新

  • GUI版本的新更新-您可以生成类别统计信息。此外,您还可以在设置窗口中根据网站的全球排名选择网站🔥
  • CLI的新更新-您可以根据网站的全球排名选择网站,如-网站TOP10,-网站TOP123等。🔥
  • 新的Social-Analyzer版本使用它自己的名为Ixora的自动图形可视化
  • 我已经收到了很多公共和私人的请求,要求将静电网站的信息添加到检测数据库中,这一点正在实施中,+400%的检测应该有这样的要求。如果您有任何非私人模块,并且您无法查看静电网站的信息,请下载最新版本或发送电子邮件给我以了解详细信息

所以·社会我·迪·a

使用户能够创建和共享内容或参与社交网络的网站和应用程序-牛津词典

安全测试

-------------------------------------              ---------------------------------
|        Security Testing           |              |        Social-Analyzer        |
-------------------------------------              ---------------------------------
|   Passive Information Gathering   |     <-->     |   Find Social Media Profiles  |
|                                   |              |                               |
|    Active Information Gathering   |     <-->     |    Post Analysis Activities   |
-------------------------------------              ---------------------------------

应用程序

标准本地主机Web应用URL:http://0.0.0.0:9005/app.html

CLI

功能

  • 字符串和名称分析(排列和组合)
  • 使用多种技术(HTTPS库和WebDriver)查找配置文件
  • 多层检测(OCR、普通、高级和特殊)
  • 使用Ixora(元数据和模式)可视化配置文件信息
  • 元数据和模式提取(从Qeeqbox OSINT项目添加)
  • 元数据的强制有向图(需要ExtractPatterns)
  • 自动调情到不必要的输出
  • 搜索引擎查找(Google API-可选)
  • 自定义搜索查询(Google API和DuckDuckGo API-可选)
  • 个人资料屏幕截图、标题、信息和网站描述
  • 按语言查找姓名来源、姓名相似度和常用词
  • 自定义用户-代理、代理、超时和隐式等待
  • Python CLI&NodeJS CLI(仅限于FindUserProfilesFast选项)
  • 用于更快检查的网格选项(仅限于对接合成)
  • 将日志转储到文件夹或终端(美化)
  • 调整查找\获取配置文件工作进程(默认值为15)
  • 失败配置文件的重新检查选项
  • 按好的、可能的和坏的过滤配置文件
  • 将分析另存为JSON文件
  • 简化的Web界面和客户端

特殊探测

安装和运行

Linux(作为节点WebApp)

sudo apt-get update
#Depedning on your Linux distro, you may or may not need these 2 lines
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
sudo add-apt-repository ppa:mozillateam/ppa -y
sudo apt-get install -y firefox-esr tesseract-ocr git nodejs npm
git clone https://github.com/qeeqbox/social-analyzer.git
cd social-analyzer
npm install
npm start

Linux(作为python包)

sudo apt-get update
sudo apt-get install python3 python3-pip
pip3 install social-analyzer
social-analyzer --username "johndoe" --metadata
#or
python3 -m social-analyzer --username "johndoe" --metadata

Linux(作为python脚本)

sudo apt-get update
sudo apt-get install git python3 python3-pip
git clone https://github.com/qeeqbox/social-analyzer
cd social-analyzer
pip3 install –r requirements.txt
python3 app.py social-analyzer --username "johndoe" --metadata

作为对象导入(Python)

from importlib import import_module
SocialAnalyzer = import_module("social-analyzer").SocialAnalyzer(silent=True)
results = SocialAnalyzer.run_as_object(username="johndoe",silent=True)
print(results)

Linux、Windows、MacOS、Raspberry pi

  • 检查一下这个wiki适用于所有可能的安装方法
  • 检查一下这个wiki用于将社交分析器与您的OSINT工具、提要等集成

社交分析器–h

Required Arguments:
  --username   E.g. johndoe, john_doe or johndoe9999

Optional Arguments:
  --websites   Website or websites separated by space E.g. youtube, tiktok or tumblr
  --mode       Analysis mode E.g.fast -> FindUserProfilesFast, slow -> FindUserProfilesSlow or special -> FindUserProfilesSpecial
  --output     Show the output in the following format: json -> json output for integration or pretty -> prettify the output
  --options    Show the following when a profile is found: link, rate, title or text
  --method     find -> show detected profiles, get -> show all profiles regardless detected or not, both -> combine find & get
  --filter     Filter detected profiles by good, maybe or bad, you can do combine them with comma (good,bad) or use all
  --profiles   Filter profiles by detected, unknown or failed, you can do combine them with comma (detected,failed) or use all
  --extract    Extract profiles, urls & patterns if possible
  --metadata   Extract metadata if possible (pypi QeeqBox OSINT)
  --trim       Trim long strings

Listing websites & detections:
  --list       List all available websites

Setting:
  --headers    Headers as dict
  --logs_dir   Change logs directory
  --timeout    Change timeout between each request
  --silent     Disable output to screen

打开外壳

运行问题

  • 请记住,现有配置文件显示status:goodrate:%100
  • 一些网站返回blockedinvalid<-这是预期的行为
  • 使用代理、VPN、ToR或任何类似方式定期检查可疑配置文件
  • 请勿将FindUserProfilesFast与FindUserProfilesSlow和ShowUserProfilesSlow混合使用
  • 将用户代理更改为最新的用户代理或增加请求之间的随机时间
  • 使用慢速模式(CLI中不可用)以避免遇到阻塞\结果问题

目标

  • 添加通用网站检测(这些需要一些审查,但我将在2021年尝试添加它们)

资源

  • DuckDuckGo API、Google API、NodeJS、bootstrap、选择化、jQuery、维基百科、font-awawed、Selenium-Webdriver&tesseract.js
  • 如果我错过了参考资料或资源,请告诉我!

采访

一些新闻\文章

免责声明\备注

  • 请确保从GitHub下载此工具
  • 这是一个安全项目(将其视为安全项目)
  • 如果您希望将您的网站排除在此项目列表之外,请与我联系
  • 此工具将在本地使用,而不是作为服务使用(它没有任何类型的访问控制)
  • 有关以-private结尾的模块的相关问题,请直接联系我(不要在GitHub上打开问题)

其他项目

Zenbot 是一个使用Node.js和MongoDB的命令行加密货币交易机器人

“要走正道,要看师父,跟着师父走,跟师父走,看穿师父,成为师父。”–禅宗谚语

Zenbot

描述

Zenbot是一个使用Node.js和MongoDB的命令行加密货币交易机器人。它的特点是:

免责声明

  • Zenbot并不是一台万无一失的盈利机器。使用它的风险自负。
  • 加密货币仍处于实验阶段,因此Zenbot也是如此。这意味着,这两个都可能在任何时候失败
  • 运行机器人,以及一般的交易都需要仔细研究涉及的风险和参数。错误的设置可能会给您造成重大损失
  • 千万不要让机器人长时间处于无人监视的状态。Zenbot不知道什么时候停止,所以如果损失太大,要做好停止的准备
  • 通常情况下,默认交易参数与买入持有策略相比表现不佳,因此在“全盘押注”之前,运行一些模拟程序,为您选择的交易所/对找到最佳参数。

文档

详细的文档位于docs-folder

问题

首先来看一下docs还有还有FAQs可能会回答你的问题。如果没有,请在Reddit上询问与Zenbot相关的(编程)问题(subreddit zenbot)

社区

加入Zenbot community on Reddit好了!

捐赠

另外,一些人询问如何向Zenbot开发公司捐款。我们接受捐款的地点是比特币地址下图:

carlos8f的BTC(原Zenbot作者)

187rmNSkSvehgcKpBunre6a5wA5hQQop6W

DeviaVir的BTC(当前维护者)

3A5g4GQ2vmjNcnEschCweJJB4umzu66sdY

谢谢!

值得注意的叉子


许可证:麻省理工学院

特此免费授予任何获得本软件副本和相关文档文件(“本软件”)的人不受限制地处理本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,以及允许获得本软件的人员这样做的权利,但受下列条件限制:(A)任何获得本软件副本和相关文档文件(“本软件”)的人均可不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利;

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中

软件按“原样”提供,没有任何明示或暗示的担保,包括但不限于适销性、特定用途适用性和不侵权的担保。在任何情况下,作者或版权所有者均不对因软件或在软件中的使用或其他交易而引起、产生或与之相关的任何索赔、损害赔偿或其他责任,无论是在合同诉讼、侵权诉讼或其他诉讼中承担责任

Leon-🧠leon是您的开源个人助理


👋引言

里昂是一种开源个人助理谁能活下来在您的服务器上

做一些事情当你向他索要

你可以的跟他谈谈而且他可以跟你谈谈您还可以给他发短信他还可以给你发短信如果你愿意,里昂可以通过离线保护您的隐私

为什么?

  1. 如果您是(或不是)开发人员,您可能想要构建许多对您的日常生活有帮助的东西。Leon可以帮助您构建他的包/模块(技能)结构,而不是为每个想法构建专门的项目
  2. 使用这种通用结构,每个人都可以创建自己的模块并与其他人共享。因此,只有一个核心(统治所有的核心)
  3. 里昂使用人工智能概念,这很酷
  4. 隐私问题,您可以将Leon配置为与他离线通话。你已经可以在没有任何第三方服务的情况下和他发短信了
  5. 开源是很棒的

这个存储库是用来做什么的?

此资料库包含Leon的以下节点:

  • 服务器
  • 包/模块
  • Web应用程序
  • HotWord节点

里昂能做什么?

今天,最有趣的部分是关于他的核心和他可以扩大规模的方式。他相当年轻,但可以很容易地扩展以拥有新功能(包/模块)。您可以通过浏览packages list

听起来不错吧?那我们开始吧!

☁️单击即可尝试

Gitpod将自动设置环境并为您运行实例

🚀快速入门

必备条件

要安装这些必备组件,可以按照How To section文档的

安装

# Clone the repository (stable branch)
git clone -b master https://github.com/leon-ai/leon.git leon
# OR download the latest release at: https://github.com/leon-ai/leon/releases/latest

# Go to the project root
cd leon

# Install
npm install

用法

# Check the setup went well
npm run check

# Build
npm run build

# Run
npm start

# Go to http://localhost:1337
# Hooray! Leon is running

Docker安装

# Build
npm run docker:build

# Run
npm run docker:run

# Go to http://localhost:1337
# Hooray! Leon is running

📚文档

有关完整文档,请访问docs.getleon.ai

🧭路线图

要了解正在发生的情况,请关注roadmap.getleon.ai

❤️贡献

如果你有改进里昂的主意,请不要犹豫。

里昂需要开源才能生存,他的模块越多,他就变得越熟练

📖里昂背后的故事

你会发现关于这件事的评论blog post

🔔敬请关注

👨作者

路易斯·格勒纳德(@louistiti_fr)

👍赞助商

您也可以通过以下方式进行贡献sponsoring Leon

请注意,我把大部分空闲时间都花在了里昂身上。

通过赞助项目,您可以使项目具有可持续性,并且开发功能的速度更快

关注的焦点不仅限于你在GitHub上看到的活动,还包括对项目方向的很多思考。这与整体设计、架构、视觉、学习过程等自然相关

📝许可证

MIT License

版权所有(C)2019年-目前,路易斯·格勒纳德louis.grenard@gmail.com

干杯!

Caprover 可扩展的PaaS(自动Docker+nginx)

CapRover

适用于NodeJS、Python、PHP、Ruby、Go应用程序的最简单的应用程序/数据库部署平台和Web服务器软件包

不需要码头工人,nginx知识!



这是什么?

CapRover是一款极其易于使用的应用程序/数据库部署和Web服务器管理器,适用于NodeJS、Python、PHP、ASP.NET、Ruby、MySQL、MongoDB、Postgres、WordPress(等等)申请!

它的速度非常快,而且非常健壮,因为它在其简单易用的界面背后使用了Docker、nginx、LetsEncrypt和NetData

✔用于自动化和脚本编写的CLI

✔便于访问和方便的Web GUI

✔不能锁定!删除CapRover,您的应用程序将继续工作!

✔引擎盖下的码头工人蜂拥而至,进行集装箱化和集群化

✔Nginx(完全可定制的模板)在引擎盖下,用于负载均衡

✔让我们在幕后加密以获得免费的SSL(HTTPS)

我是认真的!谁应该关心CapRover?

  • 不喜欢花费数小时和数天时间设置服务器、构建工具、向服务器发送代码、构建服务器、获取SSL证书、安装证书、反复更新nginx的[web]开发人员
  • 开发人员使用昂贵的服务,如Heroku、Microsoft Azure等,并希望将其成本降低到原来的1/4(Heroku对其1 GB实例每月收费25美元,而同一服务器在Valltr上的收费是5美元!)
  • 喜欢写更多关于showResults(getUserList())而且不是很多$ apt-get install libstdc++6 > /dev/null
  • 喜欢在服务器上安装MySQL、MongoDB等的开发人员,方法是从下拉菜单中选择并单击Install!
  • 设置CapRover服务器需要多少服务器/坞站/Linux知识?答:复制粘贴知识!!有关要复制和粘贴的内容的信息,请转到“入门”;-)

了解更多信息!

有关更多详细信息和文档,请访问https://CapRover.com/

贡献者

这个项目的存在要归功于所有做出贡献的人。[Contribute]

支持者

感谢我们所有的支持者!🙏

Js-beautify-javascript 格式化工具

JS 格式化

这个小美化器将重新格式化和重新缩进bookmarklet、丑陋的JavaScript、解压由Dean Edward的流行打包程序打包的脚本,以及对由NPM包处理的脚本进行部分去模糊处理javascript-obfuscator

我把这个放在最前面和中心,因为现有的业主目前在这个项目上的工作时间非常有限。这是一个很受欢迎并被广泛使用的项目,但它迫切需要有时间致力于修复面向客户的错误以及内部设计和实现的潜在问题的贡献者

如果您有兴趣,请看一下CONTRIBUTING.md然后修复标有“Good first issue”贴上标签并提交请购单。尽可能多地重复。谢谢!

安装

您可以安装node.js或python的美化器

Node.js JavaScript

您可以安装npm包。js-beautify全局安装时,它提供一个可执行文件js-beautify剧本。与Python脚本一样,美化结果被发送到stdout除非另有配置,否则

$ npm -g install js-beautify
$ js-beautify foo.js

您还可以使用js-beautify作为一个node库(本地安装,npm默认值):

$ npm install js-beautify

Node.js JavaScript(VNext)

以上安装了最新的稳定版本。要安装测试版或RC版,请执行以下操作:

$ npm install js-beautify@next

Web库

美容师可以作为Web库添加到您的页面上

JS美颜托管在两个CDN服务上:cdnjs和生菜

要从这些服务之一提取最新版本,请在您的文档中包含以下一组脚本标记:

“>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-css.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-html.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-css.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-html.min.js"></script>

<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify.js"></script>
<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify-css.js"></script>
<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify-html.js"></script>

通过更改版本号可以使用较旧的版本

免责声明:这些都是免费服务,所以有no uptime or support guarantees

python

要安装Python版本的美容器,请执行以下操作:

$ pip install jsbeautifier

与JavaScript版本不同,Python版本只能重新格式化JavaScript。它不适用于HTML或CSS文件,但您可以安装CSS-美化对于CSS:

$ pip install cssbeautifier

用法

您可以在Web浏览器中使用JS美化器美化javascript,也可以在命令行上使用node.js或python美化javascript

Web浏览器

打开beautifier.io选项通过UI提供

Web库

上面的脚本标记公开了三个函数:js_beautifycss_beautify,以及html_beautify

Node.js JavaScript

全局安装时,美容器提供一个可执行文件js-beautify剧本。美化结果发送到stdout除非另有配置,否则

$ js-beautify foo.js

要使用js-beautify作为一个node库(在本地安装之后),为javascript(Js)、CSS或HTML导入并调用适当的Beautifier方法。所有三个方法签名都是beautify(code, options)code是要美化的代码字符串。Options是一个具有您希望用来美化代码的设置的对象

配置选项名称与CLI名称相同,但使用下划线而不是破折号。例如,--indent-size 2 --space-in-empty-paren会是{ indent_size: 2, space_in_empty_paren: true }

var beautify = require('js-beautify').js,
    fs = require('fs');

fs.readFile('foo.js', 'utf8', function (err, data) {
    if (err) {
        throw err;
    }
    console.log(beautify(data, { indent_size: 2, space_in_empty_paren: true }));
});

python

安装后,要使用Python进行美化,请执行以下操作:

$ js-beautify file.js

美化的产出流向stdout默认情况下,

要使用jsbeautifier因为库很简单:

import jsbeautifier
res = jsbeautifier.beautify('your javascript string')
res = jsbeautifier.beautify_file('some_file.js')

或者,要指定一些选项,请执行以下操作:

opts = jsbeautifier.default_options()
opts.indent_size = 2
opts.space_in_empty_paren = True
res = jsbeautifier.beautify('some javascript', opts)

配置选项名称与CLI名称相同,但使用下划线而不是破折号。上面的示例将在命令行上设置为--indent-size 2 --space-in-empty-paren

选项

以下是Python和JS脚本的命令行标志:

CLI Options:
  -f, --file       Input file(s) (Pass '-' for stdin)
  -r, --replace    Write output in-place, replacing input
  -o, --outfile    Write output to file (default stdout)
  --config         Path to config file
  --type           [js|css|html] ["js"] Select beautifier type (NOTE: Does *not* filter files, only defines which beautifier type to run)
  -q, --quiet      Suppress logging to stdout
  -h, --help       Show this help
  -v, --version    Show the version

Beautifier Options:
  -s, --indent-size                 Indentation size [4]
  -c, --indent-char                 Indentation character [" "]
  -t, --indent-with-tabs            Indent with tabs, overrides -s and -c
  -e, --eol                         Character(s) to use as line terminators.
                                    [first newline in file, otherwise "\n]
  -n, --end-with-newline            End output with newline
  --editorconfig                    Use EditorConfig to set up the options
  -l, --indent-level                Initial indentation level [0]
  -p, --preserve-newlines           Preserve line-breaks (--no-preserve-newlines disables)
  -m, --max-preserve-newlines       Number of line-breaks to be preserved in one chunk [10]
  -P, --space-in-paren              Add padding spaces within paren, ie. f( a, b )
  -E, --space-in-empty-paren        Add a single space inside empty paren, ie. f( )
  -j, --jslint-happy                Enable jslint-stricter mode
  -a, --space-after-anon-function   Add a space before an anonymous function's parens, ie. function ()
  --space-after-named-function      Add a space before a named function's parens, i.e. function example ()
  -b, --brace-style                 [collapse|expand|end-expand|none][,preserve-inline] [collapse,preserve-inline]
  -u, --unindent-chained-methods    Don't indent chained method calls
  -B, --break-chained-methods       Break chained method calls across subsequent lines
  -k, --keep-array-indentation      Preserve array indentation
  -x, --unescape-strings            Decode printable characters encoded in xNN notation
  -w, --wrap-line-length            Wrap lines that exceed N characters [0]
  -X, --e4x                         Pass E4X xml literals through untouched
  --good-stuff                      Warm the cockles of Crockford's heart
  -C, --comma-first                 Put commas at the beginning of new line instead of end
  -O, --operator-position           Set operator position (before-newline|after-newline|preserve-newline) [before-newline]
  --indent-empty-lines              Keep indentation on empty lines
  --templating                      List of templating languages (auto,django,erb,handlebars,php,smarty) ["auto"] auto = none in JavaScript, all in html

它们对应于两个库接口的带下划线的选项键

每个CLI选项的默认值

{
    "indent_size": 4,
    "indent_char": " ",
    "indent_with_tabs": false,
    "editorconfig": false,
    "eol": "\n",
    "end_with_newline": false,
    "indent_level": 0,
    "preserve_newlines": true,
    "max_preserve_newlines": 10,
    "space_in_paren": false,
    "space_in_empty_paren": false,
    "jslint_happy": false,
    "space_after_anon_function": false,
    "space_after_named_function": false,
    "brace_style": "collapse",
    "unindent_chained_methods": false,
    "break_chained_methods": false,
    "keep_array_indentation": false,
    "unescape_strings": false,
    "wrap_line_length": 0,
    "e4x": false,
    "comma_first": false,
    "operator_position": "before-newline",
    "indent_empty_lines": false,
    "templating": ["auto"]
}

CLI中未显示的默认值

{
  "eval_code": false,
  "space_before_conditional": true
}

请注意,并非所有默认值都通过CLI显示。从历史上看,Python和JSAPI并不是100%相同的。还有一些其他情况使我们无法实现100%的API兼容性

从环境或.jsBeaufyrc加载设置(仅限JavaScript)

除了CLI参数之外,您还可以通过以下方式将配置传递给JS可执行文件:

  • 任何jsbeautify_-带前缀的环境变量
  • 一个JSON-由指示的格式化文件--config参数
  • 一个.jsbeautifyrc包含以下内容的文件JSON以上文件系统的任何级别的数据$PWD

此堆栈中前面提供的配置源将覆盖后面的配置源

设置继承和特定于语言的重写

这些设置是一个浅树,其值对于所有语言都是继承值,但可以被覆盖。这适用于在任一实现中直接传递给API的设置。在Javascript实现中,从配置文件(如.jsBeaufyrc)加载的设置也可以使用继承/覆盖

下面是一个示例配置树,显示了语言覆盖节点的所有支持位置。我们将使用indent_size要讨论此配置的行为方式,但可以继承或覆盖任意数量的设置,请执行以下操作:

{
    "indent_size": 4,
    "html": {
        "end_with_newline": true,
        "js": {
            "indent_size": 2
        },
        "css": {
            "indent_size": 2
        }
    },
    "css": {
        "indent_size": 1
    },
    "js": {
       "preserve-newlines": true
    }
}

使用上述示例将产生以下结果:

  • HTML文件
    • 继承indent_size从顶层设置开始,共4个空间
    • 这些文件还将以换行符结尾
    • HTML中的JavaScript和CSS
      • 继承HTMLend_with_newline设置
      • 将它们的缩进覆盖为2个空格
  • CSS文件
    • 将顶级设置重写为indent_size共1个空间
  • JavaScript文件
    • 继承indent_size从顶层设置开始,共4个空间
    • 设置preserve-newlinestrue

CSS和HTML

除了js-beautify可执行文件,css-beautifyhtml-beautify还提供了进入这些脚本的简单界面。或者,js-beautify --cssjs-beautify --html将分别完成相同的任务

// Programmatic access
var beautify_js = require('js-beautify'); // also available under "js" export
var beautify_css = require('js-beautify').css;
var beautify_html = require('js-beautify').html;

// All methods accept two arguments, the string to be beautified, and an options object.

CSS和HTML美化程序在范围上要简单得多,并且拥有的选项要少得多

CSS Beautifier Options:
  -s, --indent-size                  Indentation size [4]
  -c, --indent-char                  Indentation character [" "]
  -t, --indent-with-tabs             Indent with tabs, overrides -s and -c
  -e, --eol                          Character(s) to use as line terminators. (default newline - "\\n")
  -n, --end-with-newline             End output with newline
  -b, --brace-style                  [collapse|expand] ["collapse"]
  -L, --selector-separator-newline   Add a newline between multiple selectors
  -N, --newline-between-rules        Add a newline between CSS rules
  --indent-empty-lines               Keep indentation on empty lines

HTML Beautifier Options:
  -s, --indent-size                  Indentation size [4]
  -c, --indent-char                  Indentation character [" "]
  -t, --indent-with-tabs             Indent with tabs, overrides -s and -c
  -e, --eol                          Character(s) to use as line terminators. (default newline - "\\n")
  -n, --end-with-newline             End output with newline
  -p, --preserve-newlines            Preserve existing line-breaks (--no-preserve-newlines disables)
  -m, --max-preserve-newlines        Maximum number of line-breaks to be preserved in one chunk [10]
  -I, --indent-inner-html            Indent <head> and <body> sections. Default is false.
  -b, --brace-style                  [collapse-preserve-inline|collapse|expand|end-expand|none] ["collapse"]
  -S, --indent-scripts               [keep|separate|normal] ["normal"]
  -w, --wrap-line-length             Maximum characters per line (0 disables) [250]
  -A, --wrap-attributes              Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline|aligned-multiple|preserve|preserve-aligned] ["auto"]
  -i, --wrap-attributes-indent-size  Indent wrapped attributes to after N characters [indent-size] (ignored if wrap-attributes is "aligned")
  -d, --inline                       List of tags to be considered inline tags
  -U, --unformatted                  List of tags (defaults to inline) that should not be reformatted
  -T, --content_unformatted          List of tags (defaults to pre) whose content should not be reformatted
  -E, --extra_liners                 List of tags (defaults to [head,body,/html] that should have an extra newline before them.
  --editorconfig                     Use EditorConfig to set up the options
  --indent_scripts                   Sets indent level inside script tags ("normal", "keep", "separate")
  --unformatted_content_delimiter    Keep text content together between this string [""]
  --indent-empty-lines               Keep indentation on empty lines
  --templating                       List of templating languages (auto,none,django,erb,handlebars,php,smarty) ["auto"] auto = none in JavaScript, all in html

指令

指令允许您从源文件中控制美化器的行为。指令放在文件内部的注释中。指令的格式为/* beautify {name}:{value} */用CSS和JavaScript编写。在HTML中,它们的格式为<!-- beautify {name}:{value} -->

忽略指令

这个ignore指令使美化器完全忽略文件的一部分,将其视为不解析的文字文本。美化后以下输入保持不变:

// Use ignore when the content is not parsable in the current language, JavaScript in this case.var a =  1;/* beautify ignore:start */ {This is some strange{template language{using open-braces?/* beautify ignore:end */

保留指令

注意:此指令仅适用于HTML和JavaScript,不适用于CSS

这个preserve指令使美化器解析,然后保留一段代码的现有格式

美化后以下输入保持不变:

// Use preserve when the content is valid syntax in the current language, JavaScript in this case.
// This will parse the code and preserve the existing formatting.
/* beautify preserve:start */
{
    browserName: 'internet explorer',
    platform:    'Windows 7',
    version:     '8'
}
/* beautify preserve:end */

许可证

您可以自由地以任何您想要的方式使用它,以防您觉得它对您有用或有效,但您必须保留版权声明和许可证。(麻省理工学院)

学分

还要感谢杰森·戴蒙德、帕特里克·霍夫、诺姆·索松科、安德烈亚斯·施耐德、戴夫·瓦西列夫斯基、维塔利·巴特马诺夫、罗恩·鲍德温、加布里埃尔·哈里森、克里斯·J·舒尔、马蒂亚斯·拜恩斯、维托里奥·甘巴莱塔等人

(Readme.md:js-Beautify@1.14.0)