vulcan 编程

NRG堆栈可加快开发速度 (The NRG stack for faster development)

You've probably never heard of either Vulcan.js or Apollo Universal Starter Kit – at least not yet.

您可能从未听说过Vulcan.js或Apollo通用入门工具包-至少还没有听说过。

But I am pretty sure you've heard about React, Node.js and GraphQL. Okay, that’s what we call an understatement: you’ve likely seen millions of tweets, blog articles, meetups and podcasts about those three and their magical powers.

但是我很确定您已经听说过React,Node.js和GraphQL。 好的,这就是我们所说的轻描淡写:您可能已经看到数以百万计的有关这三者的推文,博客文章,聚会和播客以及它们的神奇力量。

There are a lot of good reasons why those technologies are praised by web developers. Yet, if you ever tried to write a modern full-stack JavaScript application from scratch, you may have noticed the amount of boilerplate it can produce.

有很多充分的理由使这些技术受到Web开发人员的好评。 但是,如果您曾经尝试从头开始编写现代的全栈JavaScript应用程序,则可能已经注意到它可以产生大量的样板文件。

This is especially annoying with generic features: setting up authentication, setting up the database, setting up the main App component, setting up the settings…

通用功能特别令人讨厌:设置身份验证,设置数据库,设置主App组件,设置设置…

Both Vulcan.js and AUSK aim to make you a fast and efficient full-stack JavaScript developer. Both rely on a modular architecture, with React for the UI, Node for the backend, and Apollo graphQL for the client/server communication layer. Both provide tons of pre-coded modules so you can focus on valuable features.

Vulcan.js和AUSK都旨在使您成为快速高效的全栈JavaScript开发人员。 两者都依赖于模块化体系结构,其中UI用于UI,Node用于后端,而Apollo graphQL用于客户端/服务器通信层。 两者都提供大量的预编码模块,因此您可以专注于有价值的功能。

However, they each take very different approaches to the problem, so I thought you might enjoy a comparison.

但是,他们各自对问题采取的方法截然不同,因此我认为您可能会比较一下。

First of all let’s introduce the competitors.

首先让我们介绍竞争对手。

Disclaimer: I am a contributor of Vulcan.js, however I used both of those technologies for my client’s projects so I’ll stay as objective as can be.

免责声明:我是Vulcan.js的贡献者,但是我在客户的项目中都使用了这两种技术,因此我将尽可能保持客观。

Apollo UNIVERSAL入门套件 (Apollo UNIVERSAL Starter Kit)

Okay, when they say universal, they mean UNIVERSAL. Have you ever seen a JavaScript boilerplate that includes a Scala server for big work? And a full React Native setup with Expo? They even close the eternal (and annoying) Angular versus React debate by supporting both.

好吧,当他们说通用时,它们的意思是通用。 您是否曾经看过包含Scala服务器JavaScript样板,可用于大型工作? 以及Expo的完整React Native设置? 他们甚至通过支持两者,结束了永恒的(烦人的)Angular vs React辩论。

I don’t have much else to say. I mean, look again at this stack, that’s a web developer’s wildest dream!

我无话可说了。 我的意思是,再次查看该堆栈,这是Web开发人员最疯狂的梦想!

I actually have something to add: it also includes Bootstrap and Ant Design as styling frameworks, Knex to connect to SQL database (MongoDB connection is not included but easily doable), and it’s written in TypeScript. All core features of a JS/GraphQL application are provided in the boilerplate (menu, auth, etc.)+ a few higher level modules that serve as examples.

我实际上要添加一些东西:它还包括Bootstrap和Ant Design作为样式框架,Knex用于连接到SQL数据库(不包括MongoDB连接,但很容易实现),并且它是用TypeScript编写的。 样板中提供了JS / GraphQL应用程序的所有核心功能(菜单,身份验证等)以及一些用作示例的更高级别的模块。

Link: https://github.com/sysgears/apollo-universal-starter-kit

链接: https : //github.com/sysgears/apollo-universal-starter-kit

Vulcan:超越通用,同构 (Vulcan: beyond universal, isomorphic)

Remember Meteor and Telescope? I know the JS ecosystem moves fast, but this golden era was like only 2 or 3 years ago.

还记得流星和望远镜吗? 我知道JS生态系统发展很快,但是这个黄金时代就像2年前或3年前一样。

Meteor was the first framework to fully exploit the combination of server-side and client-side JavaScript, by allowing to write isomorphic code that runs on both environment. Telescope was a Meteor boilerplate app meant to fully enjoy its package-oriented architecture.

Meteor是第一个通过允许编写在两种环境中运行的同构代码而充分利用服务器端JavaScript和客户端JavaScript的组合的框架。 Telescope是一个Meteor样板应用程序,旨在充分享受其面向包装的体系结构。

Though still used in many professional apps and known by a whole lot of developers, Meteor is crippled by some technical limitations that prevents a wider usage: its webpack-incompatible build system, its package manager that is now surpassed by NPM, or its RAM-consuming real-time data exchange protocol.

尽管Meteor仍在许多专业应用程序中使用,并为许多开发人员所熟知,但由于某些技术限制而无法使用,导致其无法广泛使用:Meweb不兼容Webpack的构建系统,现已被NPM超越的软件包管理器或RAM-消耗实时数据交换协议。

And I am yet to discover a framework that makes devs half as productive as Meteor. But don’t worry, there’s now a serious contender. You get it : Vulcan !

而且我还没有发现一个使开发人员的工作效率达到Meteor一半的框架。 但是不用担心,现在有一个真正的竞争者。 你明白了:火神!

The use of Apollo GraphQL and a rational package-oriented architecture allow Vulcan to overcome Meteor's limitations while enjoying the same advantages: fully modular architecture, declarative programming, isomorphism and so on.

Apollo GraphQL和合理的面向包的体系结构的使用使Vulcan可以克服Meteor的局限性,同时享有相同的优势:完全模块化的体系结构,声明式编程,同构等。

Vulcan is meant to be the Rails of the JavaScript ecosystem. Easy to get started with but complete enough to write any app.

Vulcan旨在成为JavaScript生态系统的Rails。 易于上手,但足够编写任何应用程序。

Check my previous article for a more complete description of Vulcan patterns targeting development speed.

查看我以前的文章,以更完整地描述针对开发速度的Vulcan模式 。

Link: http://vulcanjs.org/

链接: http : //vulcanjs.org/

1:框架VS样板 (1: Framework VS Boilerplate)

First major difference between these tools: AUSK is a boilerplate, while Vulcan is a framework. Where does the distinction lie, you may wonder?

这些工具之间的第一个主要区别是:AUSK是样板,而Vulcan是框架。 您可能想知道区别在哪里?

Vulcan,框架 (Vulcan, a framework)

A framework is meant to make you a more efficient developer on a daily basis by providing a specific set of functions and helpers. It is usually designed to stay separate from your app. You can update your app from time-to-time whenever a new version of the framework is published.

框架旨在通过提供一组特定的功能和助手来使您每天变得更有效率。 它通常旨在与您的应用程序分开。 每当发布新版本的框架时,您都可以不定期更新您的应用程序。

We usually distinguish frameworks and librairies based on the level of specialization. A framework usually allows delivering business-level features, while a library is a more specialized technical tool. But both mostly works the same.

我们通常根据专业化水平来区分框架和库。 框架通常允许交付业务级别的功能,而库则是更专业的技术工具。 但两者大多都相同。

The limitation with frameworks or libs is that you may feel lost when they abandon you. What do you do when the bug is not in your app, but in React or Apollo?

框架或库的限制是,当它们放弃您时,您可能会感到迷失。 当错误不在您的应用程序中,而是在React或Apollo中时,您该怎么办?

My rule of thumb is that when using a framework, you should be ready to contribute to its development, at least by opening issues whenever you encounter a bug.

我的经验法则是,在使用框架时,您应该准备为框架的开发做出贡献,至少在遇到错误时打开问题。

AUSK,样板 (AUSK, a boilerplate)

A boilerplate is a well written piece of code with a fully working development environment. That’s all. With a boilerplate it’s harder to keep up with updates because the boilerplate code is not clearly separated from your app. Kind of like Create React App after you eject.

样板是编写良好的代码,具有完整的开发环境。 就这样。 使用样板文件,很难跟上更新的步伐,因为样板代码没有与您的应用明确分开。 有点像弹出后创建React App。

It usually provides only few custom methods. You will feel faster in the first month and you will benefit from a battle-tested architecture, but your cruise speed will end up being mostly the same than without a boilerplate.

它通常仅提供很少的自定义方法。 在第一个月,您会感觉更快,并且将从久经考验的体系结构中受益,但是您的巡航速度最终将与没有样板的情况基本相同。

A boilerplate is far more freedom than a framework but also less impact on your efficiency.

样板比框架要自由得多,但对效率的影响也较小。

2学习曲线 (2 Learning Curve)

Vulcan:GraphQL变得简单 (Vulcan: GraphQL made easy)

Vulcan can be a good way to get a first grasp of GraphQL because… you don’t need to actually write GraphQL. The framework generates the GraphQL schema and resolvers for you based on your data model. Using developer tools like GraphiQL or GraphQL Voyager, you can visualize and play around with the schema to get a grasp of how your features translate into GraphQL.

Vulcan可能是掌握GraphQL的好方法,因为……您不需要实际编写GraphQL。 该框架根据您的数据模型为您生成GraphQL模式和解析器。 使用诸如GraphiQL或GraphQL Voyager之类的开发人员工具,您可以可视化并试用该模式,以了解功能如何转换为GraphQL。

The second step is to understand the logic of Vulcan itself. A live tutorial is included in the “Vulcan Starter” app to help you in the process.

第二步是了解Vulcan本身的逻辑。 “ Vulcan Starter”应用程序中包含一个实时教程,可在此过程中为您提供帮助。

AUSK:面向纯粹主义者 (AUSK: for purists)

AUSK architecture is far closer to what Express developers are used to. Think of your canonical Express app, but with GraphQL installed and a package-based architecture. No surprises.

AUSK体系结构与Express开发人员所使用的体系结构非常接近。 考虑一下您的规范Express应用程序,但安装了GraphQL并基于软件包的体系结构。 没什么好奇怪的

This also means that you’ll need to grasp the basics of GraphQL to use AUSK, in addition of course to Node, Express and React and whatever database you use (but the same goes for Vulcan). Luckily, it provides a few examples to help you in the process, including creating and listing data and even uploading files.

这也意味着,除了Node,Express和React以及您使用的任何数据库外,您还需要掌握GraphQL的基础才能使用AUSK(Vulcan也是一样)。 幸运的是,它提供了一些示例来帮助您完成此过程,包括创建和列出数据,甚至上传文件。

结论:全栈开发人员需要掌握很多知识 (Conclusion: Full-stack devs have a lot to master)

The JavaScript ecosystem is maturing more and more, which also means it is harder to learn and understand for beginners.

JavaScript生态系统越来越成熟,这也意味着对于初学者而言,学习和理解变得更加困难。

To fully enjoy those technologies, you’ll need at least some knowledge of modern JavaScript and React development.

要充分享受这些技术,您至少需要一些有关现代JavaScript和React开发的知识。

Don’t expect to be fully productive at day one. That said, there are pleeenty of courses, free or paid, to learn modern full-stack JavaScript development. Studying AUSK and Vulcan can be an incredible source of inspiration.

不要期望在第一天就能够充分发挥生产力。 也就是说,有许多免费或付费的课程可以学习现代的全栈JavaScript开发。 学习AUSK和Vulcan可能是令人难以置信的灵感来源。

3发展速度 (3 Development speed)

Vulcan:自动化所有事情 (Vulcan: automate all the things)

When well used, Vulcan is just incredibly fast at delivering features. This is because it relies on automated generation a lot, so it can produces the most relevant parts of an app in a matter of hours as long as your data model is correctly defined.

如果使用得当, Vulcan的功能交付速度将非常快 。 这是因为它非常依赖自动生成,因此只要正确定义了数据模型,它就可以在数小时内生成应用程序中最相关的部分。

This pattern is called declarative programming: you “declare” how your app works and let the framework do the job. It’s difficult to implement but can be extremely powerful.

这种模式称为声明式编程:您可以“声明”应用程序的工作方式,并由框架来完成。 这很难实现,但功能非常强大。

AUSK:更多自由 (AUSK: more freedom)

Since AUSK is boilerplate-focused, it’s a bit tougher to add basic features as it’s a multi-step process:

由于AUSK是针对样板的,因此添加基本功能会比较困难,因为它是一个多步骤过程:

  • write your GraphQL schema
    编写您的GraphQL模式
  • same for resolvers, mutations
    解析器相同,突变
  • same for your database model (using Knex or Mongoose)
    与您的数据库模型相同(使用Knex或Mongoose)
  • same for your React components
    与您的React组件相同

However, if you need to write a custom feature, it’s gonna be easier with AUSK than with Vulcan. So if you have very few data models but complex features, AUSK will be more efficient than Vulcan.

然而, 如果您需要编写自定义功能,则使用AUSK会比使用Vulcan容易。 因此,如果您只有很少的数据模型但功能复杂,则AUSK将比Vulcan更高效。

Hopefully there are ongoing work to make AUSK more declarative, through an innovative Domain Driven Design inspired schema system, domain-schema.

希望通过创新的领域驱动设计启发性架构系统domain-schema ,使AUSK更具声明性。

结论:针对正确的用例选择正确的工具 (Conclusion: select the right tool for the right use case)

There’s no magical universal technology for full-stack JS development. The development speed with each framework depends a lot on the underlying use case. I tend to prefer Vulcan for data-oriented platforms and professional tools, and AUSK for B2C SaaS platforms that require more custom features.

全栈JS开发没有神奇的通用技术。 每个框架的开发速度在很大程度上取决于基础用例。 我倾向于将Vulcan用于面向数据的平台和专业工具,将AUSK用于需要更多自定义功能的B2C SaaS平台。

4社区,支持与成熟 (4 Community, support and maturity)

火神:流星的继承人 (Vulcan: heir of Meteor)

Vulcan is a framework from Sacha Greif, who is a long time Meteor developer and very invested in the JavaScript community (State of JS and State of CSS among other things).

Vulcan是Sacha Greif的框架,Sacha Greif是Meteor的长期开发人员,并且非常投资JavaScript社区( JS State和CSS State等)。

There is an active Slack where beginners and other enthusiasts can quickly find answers to their questions.

有一个活跃的Slack,初学者和其他发烧友可以快速找到他们问题的答案。

AUSK:一个积极维护的项目 (AUSK: an actively maintained project)

AUSK is maintained by SysGears, in particular by Victor Vlasenko, the founder of the company.

AUSK由SysGears维护,特别是由公司创始人Victor Vlasenko维护。

The project is associated with Gitter. During my latest freelance mission with AUSK, Victor responded very quickly to my issues and questions. He even merged the Storybook support after I gave it a shot.

该项目与Gitter相关联。 在我最近对AUSK的自由职业期间,Victor对我的问题非常Swift地做出了回应。 在我试了一下之后,他甚至合并了Storybook的支持。

结论:小而富裕的社区 (Conclusion: small but rich communities)

Both technologies are used in production in multiple projects, so they are already safe to use. The communities are growing actively and beginner-friendly.

这两种技术已在多个项目中用于生产,因此已经可以安全使用。 社区正在积极发展,并且对初学者友好。

If you need to build a team, don’t expect to find freelancers that precisely know those technologies, they are too specific. Instead focus on finding full-stack JavaScript developers who will be able to quickly learn them. Alternatively, you can go to the source and find true specialists among the Vulcan or AUSK communities.

如果您需要组建团队,不要指望找到完全了解这些技术的自由职业者,他们太具体了。 相反,应专注于寻找能够快速学习它们的全栈JavaScript开发人员。 另外,您可以在源代码中找到Vulcan或AUSK社区中的真正专家。

5部署 (5 Deployment)

Not much to compare, both frameworks allow deployment on platforms offering free services like Zeit Now and Heroku as well as deployment on your own custom server.

相比之下,这两个框架都允许在提供免费服务(例如Zeit Now和Heroku)的平台上进行部署,以及在您自己的自定义服务器上进行部署。

6代码可伸缩性和模块化模式 (6 Code scalability and modular patterns)

火神:分享努力 (Vulcan: share efforts)

One advantage of a framework is effort sharing. End usage is clearer, and thus allows us to integrate various optimizations within the framework itself.

框架的一个优势是努力共享。 最终用途更加清晰,因此使我们能够在框架本身内集成各种优化。

Vulcan provides patterns like callbacks/hooks, enhancement and central registration to fully benefit from its package-oriented architecture. For example, we are able to add Material UI to an app, including SSR, without changing a single line of code in the Vulcan Core module.

Vulcan提供了诸如回调/挂钩,增强和集中注册之类的模式,以充分利用其面向软件包的体系结构。 例如,我们能够在不更改Vulcan Core模块中的一行代码的情况下,将Material UI添加到包括SSR的应用程序中。

More precisely, Vulcan provides different register methods for each data structure, like registerComponent , and also callbacks, like router.wrapper that allow to wrap the root App React component. You only need to import your file once at the package entry level ( main files).

更准确地说,Vulcan为每个数据结构(如registerComponent )和回调(如router.wrapper提供了不同的register方法,这些方法允许包装根App React组件。 您只需要在包进入级别( main文件)导入一次文件。

AUSK:从正确的轨道开始,自己完成 (AUSK: start on the right track, finish by yourself)

The modular architecture limits the temptation of writing spaghetti code. It favors code reuse across applications. Each package possesses an index.ts file that declares relevant middlewares, startup functions, graphQL functions shared with other modules.

模块化体系结构限制了编写意大利面条代码的诱惑。 它有利于跨应用程序的代码重用。 每个软件包都有一个index.ts文件,该文件声明了与其他模块共享的相关中间件,启动函数和graphQL函数。

The well-named module module provides classes for each environment to register a new module, like ServerModule and ClientModule . That’s the only module that is actually used directly at the app level.

命名良好的module模块为每个环境提供类,以注册新模块,例如ServerModuleClientModule 。 这是实际直接在应用程序级别使用的唯一模块。

export default new ServerModule({onAppCreate: [ callback1, callback2]
})

Internally all modules will be merged into one big module, that will eventually be used to create the app. For example, all onAppCreate callbacks will be run one after the other.

内部所有模块将合并为一个大模块,最终将用于创建应用程序。 例如,所有onAppCreate回调将一个接一个地运行。

That’s a relatively clean pattern and a very smart architecture. I mean, even the module manager is a module, isn’t that beautiful?

那是一个相对干净的模式,并且是一个非常智能的架构。 我的意思是,即使模块管理器也是一个模块,不是很漂亮吗?

But the rest is up to you. Nice, you’ll be able to optimize everything! So, are you going to loose couple your GraphQL resolvers and your Mongo database? Using which tools? How do you convert your GraphQL schema into Mongo projections? Are you going to write connectors, use DataLoader?

但是其余的取决于您。 不错,您将能够优化所有内容! 因此,您是否打算松散使用GraphQL解析器和Mongo数据库? 使用哪些工具? 如何将GraphQL模式转换为Mongo投影? 您要编写连接器,使用DataLoader吗?

Here’s the point: writing a scalable app is hard. Very hard. If you want to learn, then good for you. I am very glad to use AUSK for this very reason, doing things by yourself is the best way to learn.

重点是:编写可扩展的应用程序很困难。 很难。 如果您想学习,那么对您有好处。 出于这个原因,我很高兴使用AUSK,独自做事是最好的学习方法。

结论:您是否规避风险? (Conclusion: are you risk-averse?)

For both AUSK and Vulcan, code scalability means a modular architecture. Whenever code becomes too complex or unreadable, the solution is easy: cut it into smaller, simpler pieces.

对于AUSK和Vulcan而言,代码可伸缩性意味着模块化体系结构。 只要代码变得太复杂或不可读,解决方案就很容易:将其切成更小,更简单的片段。

Vulcan architecture is bolder, everything can be modular. This ambition comes at a risk, it may sometimes be difficult to get who registered what and when.

Vulcan的架构更加大胆,所有东西都可以模块化。 这种野心面临风险,有时可能很难让谁注册了什么内容和时间。

AUSK modular patterns are easier to read, but also a bit less powerful. It may for example be difficult to add complex global features without touching the core package code. Yet they are definitely sufficient for most use cases, you don’t have to be a modularity purist to write good apps.

AUSK模块化模式更易于阅读,但功能也略逊一筹。 例如,可能很难在不触及核心程序包代码的情况下添加复杂的全局功能。 但是对于大多数用例而言,它们绝对足够了,您不必是模块化的纯粹主义者即可编写出色的应用程序。

6手机 (6 Mobile)

火神:与科尔多瓦 (Vulcan: with Cordova)

Meteor, which Vulcan is based on, embeds Cordova. So your web app can be bundled as a mobile application with a single command line.

Vulcan所基于的流星嵌入了Cordova。 因此,您的Web应用程序可以通过一个命令行捆绑为移动应用程序。

However Vulcan does not provide tools for native apps. Of course you can still create an independent React Native app and plug it to Vulcan. Improvements on the auth system (currently the last piece of Vulcan really relying on Meteor) are planned in the months to come to facilitate such connections.

但是,Vulcan不提供用于本机应用程序的工具。 当然,您仍然可以创建一个独立的React Native应用并将其插入Vulcan。 计划在几个月内改进auth系统(目前,Vulcan的最后一部分确实依赖Meteor),以促进这种连接。

AUSK:使用React Native (AUSK: with React Native)

Combining both a setup for “vanilla” React and React Native is one of the best features of AUSK. After all, it’s a Universal starter kit! I don’t do much mobile myself but it’s reassuring to be able to quickly create a native mobile app sharing the same server as my web interface.

将“香草” React和React Native的设置结合起来是AUSK的最佳功能之一。 毕竟,这是通用入门套件! 我自己并没有做太多移动工作,但是能够快速创建与本机界面共享同一服务器的本机移动应用程序令人放心。

结论:AUSK在移动优先方面更胜一筹 (Conclusion: AUSK is better at mobile-first)

AUSK will be more suited if you specifically need to write a mobile app. Nonetheless Vulcan allows to build a mobile app from your code in just one command-line, which is okay if the mobile version is more secondary to you.

如果您特别需要编写移动应用程序,则AUSK将更适合。 尽管如此,Vulcan允许仅通过一个命令行从您的代码构建移动应用程序,如果移动版本对您而言次要,则可以。

7更改用户界面:一个棘手的问题 (7 Change the UI: a tough issue)

Creating a fullstack framework that allows instantaneous UI library change is a dream only achieved during the era of CSS. Remember those websites that allowed to switch  theme by clicking on a single button?

创建一个允许即时更改UI库的全栈框架是只有在CSS时代才能实现的梦想。 还记得那些允许通过单击一个按钮来切换主题的网站吗?

Then the JS nations attacked. Using React components, it is very difficult to provide such a feature (except for trivial color changes), because style and design is now very tied to the underlying React/Angular/Vue components.

然后,JS民族发起进攻。 使用React组件,提供这样的功能非常困难(除了琐碎的颜色变化),因为样式和设计现在与底层的React / Angular / Vue组件紧密相关。

Each React UI lib has its own way to define a button, without even speaking about theming. That’s a problem for full-stack technologies like AUSK and Vulcan, because picking a styling framework is a matter of taste. They can’t just propose a definitive choice and force you to stick to it. Bootstrap is no longer at monopoly and each developer has their own favorite lib.

每个React UI库都有自己的定义按钮的方式,甚至无需谈论主题。 对于像AUSK和Vulcan这样的全栈技术来说,这是一个问题,因为选择样式框架只是一个问题。 他们不能只是提出一个确定的选择并强迫您坚持下去。 Bootstrap不再处于垄断地位,每个开发人员都有自己喜欢的lib。

To tackle this issue, both have a similar approach. They wrote a canonical set of components with Bootstrap, then tried to allow the replacement of those components with another lib like Ant Design or Material UI.

为了解决这个问题,两者都有相似的方法。 他们用Bootstrap编写了一套规范的组件,然后试图用另一个库(如Ant Design或Material UI)替换这些组件。

It makes the code weird. For example, AUSK Button will take a color prop, because it is how Bootstrap work. If you switch to Ant Design, you will also need to use the color prop, even if Ant Design uses a type prop instead.

它使代码变得怪异。 例如,AUSK Button将采用color道具,因为它是Bootstrap的工作方式。 如果切换到Ant Design,则即使Ant Design改用type prop,也将需要使用color prop。

Since UI framework selection usually happens only once, being obligated to use a non-canonical set of props during all the developments seems a very high price for multiple UI framework support.

由于UI框架的选择通常只发生一次,因此在所有开发过程中必须使用一组非规范的道具对于多个UI框架支持来说似乎是一个很高的代价。

During development, I’d suggest to avoid using those pre-coded components for custom UI as much as possible. They are cool to build the example and generic features provided by the boilerplate/framework, but not that much when it comes to write the custom parts of your app.

在开发过程中,我建议尽量避免将这些预编码的组件用于自定义UI。 他们很酷,可以构建样板/框架提供的示例和通用功能,但是编写应用程序的自定义部分时就不那么多了。

Instead use the underlying components provided by Ant Design or Bootstrap or Material UI depending on your choice, and try to write your own UI lib. You could checkout Storybook to help you in the process, as it is included in both AUSK and Vulcan.

而是根据您的选择使用Ant Design或Bootstrap或Material UI提供的基础组件,并尝试编写自己的UI库。 您可以签出Storybook,以在此过程中为您提供帮助,因为它已包含在AUSK和Vulcan中。

8场免费战斗 (8 FREE FIGHT)

If I were to retain differentiating features specific to each of these technologies, they would be these.

如果我要保留特定于每种技术的差异化功能,它们就是这些。

火神 (Vulcan)

The schema system. To my best knowledge,  no framework is able to generate the database structure, the server entry points, the client/server communication layer, and a production-ready frontend (forms, lists etc.) from a single JSON schema.

模式系统。 就我所知,没有框架能够从单个JSON模式生成数据库结构,服务器入口点,客户端/服务器通信层以及可用于生产的前端​​(表单,列表等)。

Vulcan.js can do that while using the latest JS technologies.

Vulcan.js可以使用最新的JS技术来做到这一点。

澳斯克 (AUSK)

I did not manage to pick only one, so my loved features of AUSK would be TypeScript and React Native.

我没有设法只选择一个,所以我最喜欢的AUSK功能是TypeScript和React Native。

There has been debates for a few years around the benefits of statically typed JavaScript, whether to prefer Flow or TypeScript… And TypeScript definitely won the fight. Working with TypeScript is possible in Vulcan but, due to the use of Meteor, is currently feels unnatural and compilation is slow. AUSK uses TypeScript as a default and that’s awesome.

对于静态类型JavaScript的好处,无论是更喜欢Flow还是TypeScript,多年来一直存在争论。而TypeScript无疑赢得了胜利。 在Vulcan中可以使用TypeScript,但是由于使用了Meteor,目前感觉不自然,并且编译速度很慢。 AUSK使用TypeScript作为默认值,这很棒。

And React Native… well, there are also debates whether using React to write mobile apps is relevant. You may choose to stick to a responsive web app, but at least you know everything is setup for you, given that configuring a dev env for React Native is not always an easy task.

和React Native ...嗯,还有 辩论使用React编写移动应用程序是否相关。 您可能会选择坚持使用响应式Web应用程序,但是至少知道为您设置了一切,因为为React Native配置开发环境并不总是一件容易的事。



那么,您做出选择了吗? (So, have you made your choice?)

There are so many points that should be taken into consideration like performance, security, DevOps, auth management… Picking the right tool to build your JavaScript app is certainly not an easy choice. I hope that this article gave you valuable insights to help you in this decision.

应该考虑很多方面,例如性能,安全性,DevOps,身份验证管理……选择正确的工具来构建JavaScript应用程序当然不是一件容易的选择。 我希望本文能为您提供宝贵的见解,以帮助您做出此决定。

If you still feel hesitant, reach me out on Vulcan's Slack, I’d be glad to answer them :)

如果您仍然犹豫不决,请通过Vulcan的Slack与我联系,我很乐意回答他们:)

You can also direct any question on AUSK to Victor Vlasenko and his team at SysGears, and join Vulcan’s dedicated Slack to access the Vulcan community.

您也可以直接在AUSK维克多弗拉先科和他的团队的任何问题,在SysGears ,并加入火神的专用松弛访问火神社区。

My last advice will be that simple: give both Vulcan and AUSK a shot, they are worth your time!

我的最后一个建议就是这么简单:让Vulcan和AUSK共同尝试,值得您花时间!

Thanks to Sacha Greif and Victor Vlasenko for reviewing this article.

感谢Sacha Greif和Victor Vlasenko审阅本文。



I am the co-founder of the French company Lebrun Burel Knowledge Engineering (LBKE) —  https://www.lbke.fr

我是法国Lebrun Burel知识工程(LBKE)公司的联合创始人— https://www.lbke.fr

Always happy to talk about code, machine learning, innovation and entrepreneurship!

总是很高兴谈论代码,机器学习,创新和企业家精神!

翻译自: https://www.freecodecamp.org/news/vulcan-and-ausk-use-node-react-and-graphql-to-their-full-potential-3/

vulcan 编程

vulcan 编程_Vulcan和AUSK之间的比较:如何充分利用Node,React和GraphQL相关推荐

  1. vulcan 编程_如何用Next代替流星— Vulcan Next Starter简介

    vulcan 编程 2020年,仍在寻找高效的JS框架 (2020, still looking for a productive JS framework) When you create a pr ...

  2. 【面向对象编程】(3) 类之间的交互,依赖关系,关联关系

    各位同学好,今天和大家分享一下面向对象编程中,类之间的交互,类之间的依赖关系和关联关系.有不明白的可见前一章节:https://blog.csdn.net/dgvv4/article/details/ ...

  3. .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示

    本文讲下C#通过Socket编程实现平行主机之间网络通讯的详细讲解,非常不错的博文,一起来看下吧.      在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念 ...

  4. 海大11年春第5题:编程输出[m,n]之间所有素数,m,n由键盘输入。(10分)

    题目 本题是中国海洋大学<C语言程序设计>2011年春季学期编程题第5题. 题目: 编程输出[m,n]之间所有素数,m,n由键盘输入.(10分) 以下是本篇文章正文内容,欢迎朋友们进行指正 ...

  5. 打印20以内的素数c语言,c语言编程输出2~100之间的所有素数(每行输出10个),并将它们打印出来....

    C语言编程实现计算1到100之间的奇数之和 你好,可以这样编程]#includeintmain(){inti,sum=0;//定义循环变量和存放求和的变量sumfor(i=1;i C语言:用for循环 ...

  6. ev3 编程中各程序块之间的关联

    USB 连接 无线连接 其它 在特殊场合的 ev3 模型中, 可能会用到不止一个 brick (官方将之称为程序块). 程序块之间可以通过两种方式连接: 有线和无线. 有线是指 USB 线, 无线是指 ...

  7. MFC编程 -- 浮点数与字符串之间转换

    一.重新涉及界面 二.编写代码 if (nID == IDC_JISUAN2){TCHAR str[15];GetDlgItemText(hWnd,IDC_EDIT4,str, _countof(st ...

  8. JAVA 并发编程-多个线程之间共享数据(六)

    多线程共享数据的方式: 1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做. 2,如果每个线程执行的代码不同,这时 ...

  9. c语言整数间以1个空格隔开,C语言:用for循环语句编程输出1—20之间的所有整数,两数之间以空格分隔...

    自己加:#include /*1.输出1-20*/ int main(int argc, char **argv) { int max =20; int i; for(i=1;i<=max;i+ ...

  10. c语言中美日期转变怎么编程,公历和农历之间如何转换?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我这里有自己写的源程序: #include #include struct data { int year1; int specialmonth; int ...

最新文章

  1. ASP.NET学习笔记 1
  2. 【驱动笔记9】初探IRP
  3. web项目的中绝对路径和相对路径
  4. 重要更新|《Python程序设计开发宝典》例12-7代码有bug
  5. 你在成长为一个优秀的程序员吗
  6. 恶意软件--》木马、病毒、蠕虫
  7. export ,export default 和 import 区别以及用法
  8. 第四章——SQLServer2008-2012资源及性能监控(1)
  9. Open***+ldap配置过程
  10. Atitit.url 汉字中文路径  404 resin4 resin  解决  v2 q329
  11. mac中 安装mysql无法启动_Mac 下安装MySQL(dmg方式),无法启动
  12. POWERBUILDER -- PB通过URL下载局域网或者互联网上的图片或者文件
  13. Nokia手机S40平台手机开发环境的搭建的过程
  14. 分享 野人老师-高级信息系统项目管理师-全部的课程资料
  15. elasticSearch创建索引库、映射、文档
  16. java微调器_Swing微调器示例
  17. 解决layui form组件使用botton按钮提交页面自动刷新问题
  18. 大话西游手游服务器合服信息查询,大话西游手游2021年6月合区查询 6月最新合区列表...
  19. iMessage推广(群发)技术实现
  20. [python]遍历字典dict的几种方法

热门文章

  1. uboot2021.10-nandflash-1.nand_fill_oob
  2. 《Python编程:从入门到实践》配套源代码下载
  3. 计算机撤销英语,正在撤销对计算机所做的更改要等多久
  4. 尚硅谷的 ediary 笔记_【华硕灵耀X纵横(i71165G7/16GB/512GB/集显)评测】助力笔记本创新!英特尔Evo平台制定十大体验目标...
  5. 车辆运动学自行车模型
  6. 图解电影的网站有那些?
  7. 木瓜移动每日资讯0602:“店小秘”宣布完成1.35亿元人民币B+轮融资
  8. 线程状态的区别 blocked waitting ,join 详解
  9. DAVIS Driving Dataset 2020 (DDD20) 【转载】
  10. 周期串(Periodic Strings)