目次
回复内容:
ホームページ バックエンド開発 PHPチュートリアル javascript - 关于前后端分离的一些疑问

javascript - 关于前后端分离的一些疑问

Jun 06, 2016 pm 08:07 PM
java javascript node.js php

首先我们抛开淘宝的nodejs作中间层的前后端分离。
前后端分离,前后端通过 JSON 来交流,
那么页面是什么文件(html,shtml,jsp,还是其它)
那么页面跳转前端来跳还是后端来跳
如果前端来跳,那怎么保持会话(登录状态如何带到下个页面)。

回复内容:

首先我们抛开淘宝的nodejs作中间层的前后端分离。
前后端分离,前后端通过 JSON 来交流,
那么页面是什么文件(html,shtml,jsp,还是其它)
那么页面跳转前端来跳还是后端来跳
如果前端来跳,那怎么保持会话(登录状态如何带到下个页面)。

挨个儿简单回答?

首先我们抛开淘宝的nodejs作中间层的前后端分离

“淘宝的nodejs”,什么玩意儿,是alinode么?这和前后端分离也没什么关系啊!

前后端分离,前后端通过 JSON 来交流

没毛病,可以实现,也是常见策略

那么页面是什么文件(html,shtml,jsp,还是其它)

通常真的就是html了,你想想,前后端已经分离,也就是说面对用户请求,不再对接你的什么tomcatexpress/koa/toa等server了,谁来帮你做渲染?答案是没有。前后端分离后,渲染工作被拿到了前端(浏览器),浏览器能读什么?只能是html

那么页面跳转前端来跳还是后端来跳

前端、后端其实都可以。前端就是最简单的#做路由标识符,或者高级点用html5 mode(AngularJS里的叫法);后端就是nginx之类的“网关”服务做路由转发。具体哪种方式,取决于你的解决方案是怎么样的,你的需求是怎么样的。

如果前端来跳,那怎么保持会话(登录状态如何带到下个页面)

如果只做前端路由,页面都不重载,保持状态还不简单,存一个全局变量可不可以?用localStorage可不可以?用cookie可不可以?其实方式有的是,最终还是要看你的具体业务场景

解决方案有很多,我就说个简单的。

  • 页面文件,既然不用node,那就直接 html 好了。 可以通过一些前端模块来渲染,比如 handlebars。后端只需要输出json。

  • 页面跳转。既然是前后端分离,那么后端专心提供数据好了,路由交给前端。

  • 保持会话。如果你只是需要保存登录状态的话,只需要浏览器存储 session,每次跳转页面都去校验 session 有效性就行了。 相应的, 后端提供一个session校验接口。

但是其实这样算不上前后端分离,想想,html是由某个后端负责的吧,那么这个后端和提供数据的后端,不能在一起吧,否则又搅和在一块了。

所以,还是得有个专门的后端server来扮演前端的相关资源管理这个服务。我们团队也是用node来做,为什么呢? 因为比较省事。

  • java 后端不需要再提供json接口了,他们只需要按照业务数据特性编程。node这一层可以简单的封装一下,提供适合页面使用的接口。

  • 数据校验,前后端可以共享数据校验模块,因为都是 js。

  • 路由,html等等资源,都是由前端直接管理,而前端团队也是直接和产品经理直接沟通,快速反馈。如果这一部分需要后端的介入,就比较困难了。

以上是我们收获到的一些好处,更多的更好的,想必阿里的团队总结的很全面了。这里就不复制黏贴了。

以上。

1、所有页面都是静态的HTML文件,所有交互在前端做,包括跳转
2、网页公共的部分,比如网页头部,底部在nginx那里做。参考nginx的SSI模块。
3、会话状态,ajax调登录接口后,写一个本地cookie。

页面是什么文件: 浏览器里面看到的总是html代码。
页面跳转前端来跳还是后端来跳:web服务器来跳,跳转请求永远要发送给web服务器处理,但是js效果不属于该情况(如html块的显示/隐藏)
怎么保持会话:cookie中的session_id或者专门定义的token,这代表了当前用户的身份,也是session_id劫持的作用原理。

很多新手会有各种前后端分离的问题,但是首先要搞清楚什么是前端,什么是后端。在不同的场景下,它们的意思其实是不一样的。
就代码来说,通常前端指最终html,后端指服务器脚本。此时前后端分离是指html部分和服务器脚本松耦合。
而对于系统来说,前端是指与访问者交互的部分,后端是指数据处理部分。此时前后端分离是两个系统间的松耦合,由于session的特性决定了它不适合这个模式,所以token是通常的选择,此时前后端通信与你的网站访问微信API是相似的逻辑。

1.如果是前后端分离的话,那一般是前端跳转
2.怎么保持会话?浏览器的话简单的办法就是验证session,还可以用本地cash

1.既然已经采用前后端分离, 那前端部分应当完全独立于后端, 跳转也应由前端实现
2.页面是什么文件取决于你的决定, 你可以是html, 也可以是jade, 甚至可以是你自己实现的格式, 但是你就要实现你的模版引擎, 最终浏览器展示的, 一定是html格式的文件
3.登录状态的保存, 需要前后端配合, 主要在于后端是如何判断前端的登录状态的, 微信api的实现,是url中必须带上?access_token=[xxx]来判断状态的, 这样你就需要每个api提交都带上access_token参数。如果后端是通过cookie判断,那么前端就需要在cookie中保存状态

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

See all articles