javascript - Masalah dalam program lanjutan js
黄舟
黄舟 2017-07-05 11:07:56
0
4
992

Apabila saya melihat halaman 492 Pengaturcaraan JavaScript Lanjutan (Edisi Ketiga), saya mempunyai soalan

Apabila saya menggunakan URL "palsu" dan menyegarkannya, ralat 404 akan dikembalikan Melainkan saya mempunyai pautan sebenar seperti ini pada pelayan web, pengguna semestinya perlu memuat semula halaman tersebut yang sebenar? Fail itu sepadan dengan pautan sebenar. Lalu apakah kegunaan pushState()?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(4)
淡淡烟草味

pushState Digunakan terutamanya dalam aplikasi SPA, untuk menjawab soalan:

404 muncul. Ini kerana tiada # dalam URL dalam mod PushState, penyemak imbas sebenarnya akan memulakan permintaan kepada pelayan dan kami tidak mempunyai sumber yang sepadan dengan laluan ini pada pelayan.

Tetapi tidak perlu mempunyai pautan sebenar pada pelayan (ia akan memenatkan orang hingga mati), anda hanya perlu menukar konfigurasi pelayan supaya halaman yang tidak wujud (404) mengubah hala ke laluan akar.

Ambil Tomcat sebagai contoh Konfigurasinya sangat mudah. ​​Cuma tambahkan konfigurasi berikut pada web.xml projek anda:

    <error-page>
        <error-code>404</error-code>
        <location>/</location>
    </error-page>

Dengan cara ini, Tomcat akan mengubah hala semua laluan di mana sumber tidak dapat ditemui ke laluan akar, supaya rangka kerja bahagian hadapan anda, sama ada sudut/vue/react/tulang belakang, boleh memproses URL yang diminta sendiri di bahagian hadapan -akhir.

Untuk jenis pelayan lain, seperti nginx/apache/IIS, sila rujuk dokumen ini: https://github.com/angular-ui...

Sumber: https://my.oschina.net/mumu/b...

过去多啦不再A梦

Menekan muat semula akan menghantar permintaan kepada pelayan dengan URL penyemak imbas semasa.

Sebagai contoh, jika anda menukar alamat semasa kepada boomshaklaka.com/boom melalui pushState()
Selepas mengklik muat semula, pelayan akan mengembalikan 404 apabila ia menerima alamat ini dan mendapati ia tidak wujud.

漂亮男人

Pertama sekali, anda perlu memahami perbezaan antara penghalaan hadapan dan penghalaan belakang.

Dalam kes hanya penghalaan bahagian belakang, semua halaman yang anda minta dikembalikan kepada anda oleh bahagian belakang Pada masa ini, semua penghalaan dikawal oleh bahagian belakang.

Tetapi kadangkala kami tidak mahu memuat semula halaman, tetapi url itu juga mahu ia berubah, seperti aplikasi SPA. Pada masa ini kami memerlukan penghalaan bahagian hadapan, dan pushState ini memainkan peranan ini di sini.

某草草

Pertama sekali, saya masih biasa memproses penghalaan di latar belakang saya akan menggunakan penghalaan latar belakang sebagai contoh:

Pertama sekali, url boleh ditakrifkan sewenang-wenangnya Bagi fail mana yang ingin anda kaitkan, terpulang kepada anda

<action name="index">
    <result>xxx/index.jsp</result>
</action>
<action name="login">
    <result>xxx/index.jsp</result>
</action>

Tindakan yang berbeza boleh menghala ke halaman yang sama, jadi tapak web anda mesti mempunyai sekurang-kurangnya satu halaman

Kedua:

Dalam fail HTML, kaedah history.pushState() menambah keadaan pada sejarah penyemak imbas.

Lebih banyak digunakan untuk menetapkan titik jangkar:

 window.location = "#foo";

Bagi 404 yang disebut dalam artikel itu, ia masih kerana terdapat masalah dengan arah laluan dan sumber tidak ditemui.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan