Defiant是一个Node.js Web应用程序框架,旨在促进构建破坏性技术。
Defiant之所以如此命名,是因为其创建者对应该如何设计这样的系统以及其使用潜力有强烈的看法。 (这也被称为“反抗”,因为它似乎许多现有的框架基本上都是彼此的克隆,我们想做些完全不同的事情。)
Defiant不是完成的项目。但是,这是一项积极的工作,我们欢迎您的意见。查看路线图,以查看您可以跳入哪里!
目前,只有少数人在看Defiant。但是,如果您想与我们交谈,那就在这里加入我们!您的参与对我们来说是宝贵的!
让我们以电子邮件为例。如果您想要自己的电子邮件地址(例如, @yourname.com),则有两个选择之一:要么设置自己的电子邮件服务器,要么有某人(例如Google,Zoho等)为您托管它,可能是每月/年费。自我管理非常复杂(设置防火墙,IMAP/POP3/SMTP访问,基于Web的前端,具有正确的DKIM和SPF记录,SSL证书,SSL证书,垃圾邮件过滤,防病毒,用户管理等的DNS记录),如果您弄错了,则结果可能是灾难性的。但是,当您需要多个用户帐户时,付钱给其他人管理它可能会变得昂贵,几乎没有自定义,并且您始终受到第三方的摆布(但是他们可能决定监视您)。
这与Defiant有什么关系? Defiant的框架可以提供上述所有部分,并包裹在一个简单的软件包中(从最终用户的角度来看)。从某种意义上说,框架的目的是编舞所有这些不同的单个系统的相互作用,并将它们置于我们“仅仅凡人”可以安全实现的格式中。 Defiant希望您能够从我们自己的服务器的隐私中拥有和管理这些技术(并通过代理您自己的数据)。
使用Defiant可以构建哪种系统?
这些系统尚不存在,而是表明了反抗背后的意图。我们希望拥有一个安全,易于使用,灵活的框架,在上面提到的系统中,它可以通过该框架来构建(混合和匹配)。我们希望将互联网从大公司中夺回,并将强大的技术放回我们普通人的手中。
顺便说一句,我们需要您的帮助才能做到。请考虑帮助我们发展反抗,并撤回互联网。挑衅!
Defiant坚信,作为开发人员,您应该能够使用此框架,并在没有黑客核心文件的情况下添加或修改其功能。同样,如果您在此框架上使用第三方插件,并希望添加或修改插件的功能,那么您应该能够这样做,而无需黑客插件本身。如果体系结构不支持此灵活性,则应将其解释为错误,应按照此类方式进行报告。简而言之,一切都应该太过填充了。
Defiant不遵守严格的MVC框架,因为这对我们的想法还不够灵活。
每个框架都对某件事有意见。有些人关心放置文件的位置,有些则想执行特定的范例。 Defiant的意见是关于不同部分应如何相互作用的意见。 JavaScript语言和Node.js平台提供了一套独特而强大的工具,可在统一体系结构下解决许多不同的问题和用例。
我们认为开源应该就是这样:完全开放。我们通常不同意GPL对其他项目的要求的某些规定,因此已根据MIT许可获得了该项目的许可。
在理想的世界中,版权将是我们为更大的利益而忽略的事情。不幸的是,律师,政客和公司贪婪的事情很复杂,因此我们必须在他们创造的负担下运作。因此,Defiant项目的版权持有人是Corey PennyCuff。任何对该项目的贡献者都会凭借其故意的贡献,特此同意将贡献的版权分配给科里·彭尼卡夫(Corey Pennycuff),并确认他们有法律权力可以这样做。在包含第三方图书馆的情况下,允许此规定的例外,该图书馆必须完全存在于其自己的子目录中,并包含适当的版权所有权信息。
反抗宣言解释了反抗项目的哲学。他们是:
阅读(简短的)宣言本身,以了解我们如何应用这些想法。
到目前为止,我仅在Windows 10中的Linus(特别是Debian)和Windows子系统上对此进行了测试。
最低限度,您需要安装python和sqlite3软件包。您可能还需要build-essential 。
apt-get install python sqlite3这些是安装反抗依赖的模块所必需的。这不是代码库的直接依赖性。
这需要一段时间...
npm install默认情况下,Defiant试图将信息存储在/var/defiant目录中。这将来可以配置。目前,创建目录,并确保您对目录的写入权限。
const Defiant = require ( 'defiant' ) ;
new Defiant . Engine ( )
// Add Plugins.
// The Example Plugin is included with Defiant, and, of course, should not
// be included in production code.
. addPlugin ( Defiant . Plugin . Example )
// Explicitly set a directory where Defiant should look for the settings
// files. If no files exist, then appropriate defaults will be generated.
// This directory should be separate from your application code, and
// preferably under version control.
. defineBootstrapDirectory ( '/var/defiant/settings' )
// Initialize the Engine and its components.
// init() is the last call that should be made, as Defiant will now begin
// listening for connections.
. init ( ) ; Defiant开始在端口8888上运行(将来可以配置),因此您应该可以访问http://localhost:8888以查看该站点运行。查看管理员用户名和密码的控制台输出。
Defiant目前还没有做太多事情,也没有准备好进行认真的工作。为什么?因为它仍在建造!它的一部分仅存在于开发人员的思想和对话中。如果您想提供帮助,请向我们发送消息并找出当前路线图的内容。
查看路线图,以查看有效的作用以及我们直接雷达的内容。更好的是,与我联系,找出如何跳入并为开发提供帮助!
我们重复:此代码尚未用于任何生产工作。
文档可以在这里找到。
API中的任何内容都没有石头,而且几乎没有官方文档(尽管我们确实试图负责任地评论该代码)。此外,这是第一稿,甚至还没有完成。当您查看代码时,请记住这一点:整个系统中都有黑客和戒酒。有时,骇客只是为了使某些东西有效,以便可以将其他一些与半相关的部分充实,并且有意以稍后重新审视代码。有时,TODO只是表示一个想法的存根,或者指示以后需要与系统接口的地方。有时,该功能仅存在于作者的心中。 ESP在这里会有所帮助...
最重要的是,我们鼓励您束缚群众的趋势和智慧,以期获得新鲜和免费的编码体验。如果失败了,您也可能会变得胡思乱想。不管你是什么,...挑衅!