目录
>让我们创建一个简单的网格指令以显示JSON数组。我们将首先创建一个AngularJS模块。
我们想通过标签名称使用该指令,例如:
经常询问有关升级到角度组件的问题(常见问题解答)
>
>角度支持移动设备如何通过提供响应迅速的布局和触摸支持来支持移动设备。它还为移动设备(例如懒惰加载和异步模板编译)提供了性能优化。 Angular还支持渐进式Web应用程序(PWA),可以安装在移动设备上并离线工作。
首页 web前端 js教程 将您的应用程序升级到Angular 1.5组件及以后!

将您的应用程序升级到Angular 1.5组件及以后!

Feb 18, 2025 am 11:37 AM

将您的应用程序升级到Angular 1.5组件及以后!

>本文由Dan Prince和Michaela Lehr进行了同行评审。感谢SitePoint所有的同行评审员制作SitePoint内容的最佳状态! >随着AngularJS的每个新版本,开发团队都试图弥合AngularJs 1.x和2之间的差距。随着AngularJS 1.5的释放,开发人员将能够在结构上编写类似于AngularJS 2.0。

的应用程序。 在本教程中,我们将在AngularJS 1.4中创建一个网格指令。然后,我们将逐步升级到1.5,然后查看如何将其转换为使用2.0版。

钥匙要点

从AngularJS 1.4开始:首先在AngularJs 1.4中创建一个简单的网格指令以显示JSON数组,并利用Bootstrap进行布局设计。

升级到AngularJS 1.5:通过更换脚本参考并利用新组件指令助手方法,将您的AngularJS 1.4指令转换为1.5,这简化了配置并准备将来升级。 AngularJS 1.5中的组件优点:AngularJs 1.5中的组件提供句法糖,而不是指令,提供默认配置和简化的方法,这对于过渡到AngularJS 2.0。
    >过渡到AngularJS 2.0:由于其与1.x版本的架构差异,需要从划痕开始时从头开始时从头开始,需要其他库和新的设置。
  • > 使用AngularJs 2.0组件:使用Typescript在AngularJS 2.0中实现组件,可增强代码的可维护性和可检验性,并承认AngularJS 2.0是基于组件的,并且支持高级功能,例如层次依赖性注入和动态载荷。
  • 入门
  • >让我们从创建一个称为AngularMigrateApp的项目目录。在此文件夹中,创建一个称为index.html的HTML页面。 这是页面的外观:
  • 以及角框架,我们还将利用引导程序设计指令布局。我们直接从CDN中加入了这两个文件。
  • 创建网格指令

>让我们创建一个简单的网格指令以显示JSON数组。我们将首先创建一个AngularJS模块。

>我们定义了一个名为“雇员”的常数,该常数包含一个示例数据的数组。然后,我们将此数组注入homectrl,并在控制器的范围上提供。
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span>
</span><span><span><span><head</span>></span>
</span>    <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span>
</span>    <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span>    <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
登录后复制
登录后复制
登录后复制
登录后复制
>让我们创建一个称为MyGrid的指令,我们将使用该指令显示上述JSON数组。

我们想通过标签名称使用该指令,例如:

>

>因此,我们将添加限制选项以指定:
angular<span>.module('myApp', [])
</span>    <span>.constant('employees', [{
</span>        <span>firstName: 'Rima',
</span>        <span>lastName: 'George',
</span>        <span>location: 'San Francisco'
</span>    <span>}, {
</span>        <span>firstName: 'Shaun',
</span>        <span>lastName: 'John',
</span>        <span>location: 'Germany'
</span>    <span>}, {
</span>        <span>firstName: 'Rahul',
</span>        <span>lastName: 'Kurup',
</span>        <span>location: 'Bangalore'
</span>    <span>}, {
</span>        <span>firstName: 'Samson',
</span>        <span>lastName: 'Davis',
</span>        <span>location: 'Canada'
</span>    <span>}, {
</span>        <span>firstName: 'Shilpa',
</span>        <span>lastName: 'Agarwal',
</span>        <span>location: 'Noida'
</span>    <span>}])
</span>
    <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span>        $scope<span>.employees = employees;
</span>    <span>}])
</span>
登录后复制
登录后复制
登录后复制
登录后复制
>

接下来,我们要将员工数据从视图传递到指令。因此,我们将其添加为绑定:

<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span>
</span><span><span><span><head</span>></span>
</span>    <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span>
</span>    <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span>    <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
登录后复制
登录后复制
登录后复制
登录后复制

>现在,我们可以将员工数据作为属性传递给指令:>

最后但并非最不重要的一点是,我们需要一个HTML模板来显示数据:>
angular<span>.module('myApp', [])
</span>    <span>.constant('employees', [{
</span>        <span>firstName: 'Rima',
</span>        <span>lastName: 'George',
</span>        <span>location: 'San Francisco'
</span>    <span>}, {
</span>        <span>firstName: 'Shaun',
</span>        <span>lastName: 'John',
</span>        <span>location: 'Germany'
</span>    <span>}, {
</span>        <span>firstName: 'Rahul',
</span>        <span>lastName: 'Kurup',
</span>        <span>location: 'Bangalore'
</span>    <span>}, {
</span>        <span>firstName: 'Samson',
</span>        <span>lastName: 'Davis',
</span>        <span>location: 'Canada'
</span>    <span>}, {
</span>        <span>firstName: 'Shilpa',
</span>        <span>lastName: 'Agarwal',
</span>        <span>location: 'Noida'
</span>    <span>}])
</span>
    <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span>        $scope<span>.employees = employees;
</span>    <span>}])
</span>
登录后复制
登录后复制
登录后复制
登录后复制

>在index.html的主体中添加以下HTML模板脚本。

<span>.directive('myGrid', function() {
</span>    <span>return {
</span>    <span>}
</span><span>})
</span>
登录后复制
登录后复制
登录后复制
>您在上面的代码中看到,我们正在迭代信息属性,并在员工列表中显示每个项目。

>让我们在index.html内使用myGrid指令。添加以下代码:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span>
</span>
登录后复制
登录后复制

>我们已经指定了HOMECTRL控制器,并在内部使用了我们的指令。将更改保存并浏览到index.html页面。这是行动中数据网格的演示:

>

>请参阅codepen上的sitepoint(@sitepoint)的笔Angularjs 1.4演示。
<span>.directive('myGrid', function() {
</span>    <span>return {
</span>        <span>restrict: 'E'
</span>    <span>}
</span><span>})
</span>
登录后复制
登录后复制

>升级到1.5

到目前为止,我们已经使用1.4版创建了一个AngularJS指令,并且运行良好。现在,让我们尝试使用AngularJS 1.5使用相同的代码,看看是否有任何事情破裂。

>让我们用1.5版的CDN链接替换现有脚本引用。如果您尝试刷新页面,则所有内容都应该继续正常工作。随着1.x行的新版本,该框架正在更靠近AngularJS 2.0使用组件的工作方式,我们可以在代码中利用它,从而使最终过渡到版本2.0更容易。 在Angularjs 1.5中,组件是指令的句法糖,可照顾默认值并具有更简单的配置。他们应该被替换为替代品,尤其是对于那些希望将来升级的人。

与AngularJS合作时,开发人员通常倾向于使用基于控制器的方法,但这会随着应用程序开始增长而造成许多问题。基于控制器和基于视图的方法会导致重复的NG-Controller/View,但是基于组件的方法通过创建可以组成较大组件而无需重复代码的组件来解决问题。>

>让我们尝试使用新的组件指令方法并修改我们现有的代码。我们将首先创建一个组件:

>与指示方法(采用函数)不同,组件方法采用对象。我们将通过不同模板中的指令中的相同对象。这是HTML模板:

这是修改的组件代码:>

>在上述代码中可以看到,我们传递了我们旧指令中的所有选项。

在index.html页面中创建一个称为mycomp的组件。
<span>.directive('myGrid', function() {
</span>    <span>return {
</span>        <span>restrict: 'E',
</span>        <span>scope: {
</span>            <span>info: '=info'
</span>        <span>}
</span>    <span>}
</span><span>})
</span>
登录后复制
>

保存更改并刷新页面,您应该能够看到数据未显示,但浏览器控制台中也没有错误。
<span><span><span><my-grid</span> info<span>="employees"</span>></span><span><span></my-grid</span>></span>
</span>
登录后复制

如果我们查看官方站点的组件和指令之间的比较图表,我们可以看到范围始终是隔离的组件。

将您的应用程序升级到Angular 1.5组件及以后!

因此,我们需要利用绑定选项将数据绑定到控制器。不再需要限制选项,因为组件仅限于元素。

这是修改的代码:

>

<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span>
</span><span><span><span><head</span>></span>
</span>    <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span>
</span>    <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span>    <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
登录后复制
登录后复制
登录后复制
登录后复制
绑定信息将绑定到控制器。控制器的默认别名为$ ctrl,在模板中,我们将使用它来访问信息属性:

>

angular<span>.module('myApp', [])
</span>    <span>.constant('employees', [{
</span>        <span>firstName: 'Rima',
</span>        <span>lastName: 'George',
</span>        <span>location: 'San Francisco'
</span>    <span>}, {
</span>        <span>firstName: 'Shaun',
</span>        <span>lastName: 'John',
</span>        <span>location: 'Germany'
</span>    <span>}, {
</span>        <span>firstName: 'Rahul',
</span>        <span>lastName: 'Kurup',
</span>        <span>location: 'Bangalore'
</span>    <span>}, {
</span>        <span>firstName: 'Samson',
</span>        <span>lastName: 'Davis',
</span>        <span>location: 'Canada'
</span>    <span>}, {
</span>        <span>firstName: 'Shilpa',
</span>        <span>lastName: 'Agarwal',
</span>        <span>location: 'Noida'
</span>    <span>}])
</span>
    <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span>        $scope<span>.employees = employees;
</span>    <span>}])
</span>
登录后复制
登录后复制
登录后复制
登录后复制
现在,如果刷新页面,则应该能够查看使用MyComp组件显示的数据。

>请参阅codepen上的sitepoint(@sitepoint)的笔Angularjs 1.5演示。

>升级到2.0

注意:AngularJS 2.0仍在beta中。我们使用的版本是Angular2.0.0-Beta.8。

>让我们用CDN中的2.0版链接替换我们的应用中的AngularJS的现有版本,看看是否有任何破坏:

<span>.directive('myGrid', function() {
</span>    <span>return {
</span>    <span>}
</span><span>})
</span>
登录后复制
登录后复制
登录后复制
刷新页面后,页面上什么也不会显示,如果我们检查浏览器控制台,我们也可以看到几个错误。

>

将您的应用程序升级到Angular 1.5组件及以后! 如您所见,我们的组件代码与Angular 2.0!

>让我们从非常划痕开始,看看新版本的工作原理,然后我们将尝试移植我们的组件。

>可以通过包含单个脚本标签的框架来开始使用Angular 1.X,但Angular 2.0的情况已更改。我们需要其他几个库才能运行。尽管可以通过脚本标签分别加载它们,但可以将它们捆绑在一起,以作为生产构建过程的一部分。

>

>如果我们查看官方快速启动指南,我们可以看到我们需要其他一些库和开发依赖性才能开始使用2.0。

>让我们创建一个称为angularjs2.0component的文件夹,然后创建一个package.json文件,如下所示

上面的文件显示了AngularJS 2.0应用程序所需的所有依赖项。保存更改并使用npm安装所需的依赖项:

>创建一个名为app的子文件夹,并在内部创建一个名为app.component.js的文件,并具有以下代码:
<span><span><span><my-grid</span>></span><span><span></my-grid</span>></span>
</span>
登录后复制
登录后复制

在上面的代码中,我们正在使用Angular Core命名空间NG.CORE创建一个组件。我们已经将组件的选择器定义为my-comp。我们使用相同的html,grid.html作为我们应用的模板。我们已经在组件的构造函数中定义了我们的员工对象。

<span>.directive('myGrid', function() {
</span>    <span>return {
</span>        <span>restrict: 'E'
</span>    <span>}
</span><span>})
</span>
登录后复制
登录后复制
在以下代码中创建一个名为main.js并粘贴的文件:>
<span><span><!DOCTYPE html></span>
</span><span><span><span><html</span> lang<span>="en"</span> ng-app<span>="myApp"</span> class<span>="no-js"</span>></span>
</span><span><span><span><head</span>></span>
</span>    <span><span><span><title</span>></span>My AngularJS App<span><span></title</span>></span>
</span>    <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span>></span>
</span><span><span><span></head</span>></span>
</span><span><span><span><body</span>></span>
</span>    <span><span><span><script</span> src<span>="https://code.angularjs.org/1.4.10/angular.js"</span>></span><span><span></script</span>></span>
</span><span><span><span></body</span>></span>
</span><span><span><span></html</span>></span>
</span>
登录后复制
登录后复制
登录后复制
登录后复制

这告诉Angular加载我们刚刚创建的组件。

下一步,创建一个名为index.html的文件在应用程序文件夹之外,然后粘贴以下代码:>

>保存更改并使用NPM启动开始服务器。此命令运行一个名为Lite-Server的本地开发服务器,该服务器将index.html加载在浏览器中。

angular<span>.module('myApp', [])
</span>    <span>.constant('employees', [{
</span>        <span>firstName: 'Rima',
</span>        <span>lastName: 'George',
</span>        <span>location: 'San Francisco'
</span>    <span>}, {
</span>        <span>firstName: 'Shaun',
</span>        <span>lastName: 'John',
</span>        <span>location: 'Germany'
</span>    <span>}, {
</span>        <span>firstName: 'Rahul',
</span>        <span>lastName: 'Kurup',
</span>        <span>location: 'Bangalore'
</span>    <span>}, {
</span>        <span>firstName: 'Samson',
</span>        <span>lastName: 'Davis',
</span>        <span>location: 'Canada'
</span>    <span>}, {
</span>        <span>firstName: 'Shilpa',
</span>        <span>lastName: 'Agarwal',
</span>        <span>location: 'Noida'
</span>    <span>}])
</span>
    <span>.controller('HomeCtrl', ['$scope', 'employees', function($scope<span>, employees</span>) {
</span>        $scope<span>.employees = employees;
</span>    <span>}])
</span>
登录后复制
登录后复制
登录后复制
登录后复制

,但数据仍未显示!

> 在AngularJS 2.0中,循环的语法有些不同。将grid.html中的循环部分修改为如下所示:

保存更改并重新启动服务器,您应该能够查看应用程序中显示的员工数据。

<span>.directive('myGrid', function() {
</span>    <span>return {
</span>    <span>}
</span><span>})
</span>
登录后复制
登录后复制
登录后复制

>将其包裹起来

>组件是AngularJS 2.0的主要组成部分,可以说它基于组件的框架是正确的。在1.x行的每个新版本中,我们都在更靠近使用2.0版的应用程序开发应用程序。 >更深入地研究迁移您的AngularJS应用程序,请考虑阅读官方迁移指南。 Angular 2代码也可以用打字稿和DART编写,如果您有兴趣,我建议您分别阅读AngularJS 2的官方指南,分别是Typescript或Dart。

在下面的评论中分享您的想法和建议!

经常询问有关升级到角度组件的问题(常见问题解答)

为什么我要从AngularJS升级到Angular?由于其层次依赖注入和基于组件的体系结构,Angular具有更好的性能。与AngularJS不同,它还支持移动设备。 Angular使用TypeScript,它提供静态键入,接口和类,使代码更可维护和可测试。角度还改善了依赖性注入,模块化和可检验性。

>从AngularJS升级到Angular时,我可能面临什么挑战?>

从AngularJS升级到Angular,由于架构的差异,可能会具有挑战性,语言和语法。您可能会面临将AngularJS代码迁移到打字稿的问题,适应新的基于组件的体系结构,并学习表达式的新语法。您可能还需要重写路由配置并调整构建过程来处理打字稿。

我可以在同一应用程序中使用AngularJs并将Angular一起使用吗?在迁移过程中的同一应用程序中。这被称为混合应用。您可以在应用程序中引导AngularJ和Angular,它们可以共存并相互作用。这使您可以通过组件逐步迁移应用程序,而不是进行完整的重写。

>

> typescript在Angular中的作用是什么?编译到普通的JavaScript。在Angular中,Typescript提供了静态键入,接口和类,这使代码更可维护和可测试。 TypeScript还提供了使用自动完成,类型检查和源地图支持的更好的工具,从而改善了开发体验。

如何基于组件的Angular架构改善性能?角度的体系结构通过实现单向数据流和变化检测来改善性能。 Angular中的每个组件都有一个明确定义的接口,并封装了其自身的行为和渲染。这使应用程序更容易理解,测试和维护。单向数据流确保视图始终是模型的投影,从而简化了编程模型并提高了性能。

>角度支持移动设备如何通过提供响应迅速的布局和触摸支持来支持移动设备。它还为移动设备(例如懒惰加载和异步模板编译)提供了性能优化。 Angular还支持渐进式Web应用程序(PWA),可以安装在移动设备上并离线工作。

>

我如何测试我的角度应用程序?

Angular提供了一个称为测试台的测试框架,哪个允许您为组件创建动态测试环境。您还可以使用茉莉(Jasmine)(行为驱动的开发框架来测试JavaScript代码,以及测试跑步者Karma。 Angular还支持使用量角器的端到端测试。

>有哪些资源可用于学习角度?

有许多可用于学习角度的资源,包括官方的角度文档,在线教程,在线教程,书籍和课程。 Angular社区也非常活跃和支持,有许多论坛,博客和stackoverflow问题可供参考。

以上是将您的应用程序升级到Angular 1.5组件及以后!的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1660
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1260
29
C# 教程
1233
24
神秘的JavaScript:它的作用以及为什么重要 神秘的JavaScript:它的作用以及为什么重要 Apr 09, 2025 am 12:07 AM

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的演变:当前的趋势和未来前景 JavaScript的演变:当前的趋势和未来前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript引擎:比较实施 JavaScript引擎:比较实施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript:探索网络语言的多功能性 JavaScript:探索网络语言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

如何使用Next.js(前端集成)构建多租户SaaS应用程序 如何使用Next.js(前端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:22 AM

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C到JavaScript:所有工作方式 从C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

使用Next.js(后端集成)构建多租户SaaS应用程序 使用Next.js(后端集成)构建多租户SaaS应用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务

See all articles