Heim >Web-Frontend >Front-End-Fragen und Antworten >Wie implementiert der Node.js-Client die Seitenanzeige, ohne Ressourcen herunterzuladen?

Wie implementiert der Node.js-Client die Seitenanzeige, ohne Ressourcen herunterzuladen?

PHPz
PHPzOriginal
2023-04-05 09:09:18674Durchsuche

Mit der kontinuierlichen Weiterentwicklung der Webtechnologie beginnen immer mehr Websites, JavaScript- und Ajax-Technologie zu verwenden, um interaktivere Seiteneffekte zu erzielen. Als Backend-Programmiersprache auf Basis von JavaScript wird der Client von Node.js zunehmend zur Entwicklung von Webanwendungen eingesetzt. Allerdings müssen die Front-End-Seiten einiger Websites einige Ressourcen herunterladen, bevor sie normal angezeigt werden können. Hier ist eine gängige Methode, um Seiten auf dem Node.js-Client anzuzeigen, ohne Ressourcen herunterzuladen.

Wenn Sie über den Node.js-Client auf eine Website zugreifen müssen, fordern Sie im Allgemeinen die HTML-Seite der Website an, analysieren dann die darin enthaltenen Ressourcenlinks und laden dann die Seite herunter und zeigen sie an, indem Sie diese Ressourcen anfordern.

Wenn Sie sich anmelden müssen, um eine Ressource herunterzuladen, müssen Sie die Anmeldung auf dem Node.js-Client simulieren und Cookies aufzeichnen, damit nachfolgende Anfragen den Anmeldestatus beibehalten können. Das Codebeispiel lautet wie folgt:

const superagent = require('superagent');
const cheerio = require('cheerio');

superagent.post('https://example.com/login')
  .send({
    username: 'your username',
    password: 'your password'
  })
  .end((err, res) => {
    const cookie = res.headers['set-cookie'];
    superagent.get('https://example.com/secret-page')
      .set('cookie', cookie)
      .end((err, res) => {
        const $ = cheerio.load(res.text);
        console.log($('p').text());
      });
  });

Im obigen Code verwenden wir das Superagent-Modul, um die Vorgänge zum Anmelden und Anfordern der Seite zu implementieren. Unter anderem wird die Methode .set() verwendet, um Cookies so zu setzen, dass wir bei nachfolgenden Anfragen angemeldet bleiben können. .set() 方法用来设置 Cookie,这样我们就可以在后续的请求中保持登录状态了。

不过,如果某些资源的下载是可以不必要的,我们就可以使用一些技巧来避免下载这些不必要的资源。例如,一些网页上包含的图片、视频等资源,如果我们不需要显示它们,那么就可以将其 URL 改为空字符串或占位符,以达到不下载的目的。示例代码如下:

const superagent = require('superagent');
const cheerio = require('cheerio');

superagent.get('https://example.com')
  .end((err, res) => {
    const $ = cheerio.load(res.text);
    $('img').attr('src', '');  // 将所有图片链接修改为空字符串
    $('video').attr('src', 'placeholder.mp4'); // 将所有视频链接修改为占位符
    console.log($.html());
  });

上述代码中,我们使用了 cheerio 模块来解析 HTML 页面,然后使用 $().attr()

Wenn jedoch das Herunterladen bestimmter Ressourcen unnötig ist, können wir einige Techniken anwenden, um das Herunterladen dieser unnötigen Ressourcen zu vermeiden. Wenn wir beispielsweise auf einigen Webseiten enthaltene Ressourcen wie Bilder und Videos nicht anzeigen müssen, können wir deren URLs in leere Zeichenfolgen oder Platzhalter ändern, um das Herunterladen zu verhindern. Der Beispielcode lautet wie folgt:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com', {
    waitUntil: 'networkidle0'  // 告诉 Puppeteer 在所有网络请求结束后再进行页面渲染
  });
  await page.evaluate(() => {
    Array.from(document.querySelectorAll('img')).forEach(img => {
      img.src = '';
    });
    Array.from(document.querySelectorAll('video')).forEach(video => {
      video.src = 'placeholder.mp4';
    });
  });
  const html = await page.content();
  console.log(html);
  await browser.close();
})();
Im obigen Code verwenden wir das Cheerio-Modul, um die HTML-Seite zu analysieren, und verwenden dann die Methode $().attr(), um den Ressourcenlink zu ändern Das muss in die gewünschte Zeichenfolge geändert werden.

Zusätzlich zu den oben genannten Methoden gibt es eine fortgeschrittenere Möglichkeit, den Effekt zu erzielen, dass keine Ressourcen heruntergeladen werden, und zwar die Verwendung eines Headless-Browsers. Puppeteer ist eine von Google entwickelte Headless-Browserbibliothek, die in Node.js verwendet werden kann. Mit Puppeteer können wir das Browserverhalten beim Zugriff auf Webseiten simulieren und einige fortschrittliche Technologien verwenden, um das Rendern von Seiten und das Laden von Ressourcen zu steuern. Der Beispielcode lautet wie folgt:

rrreee

Über Puppeteer können wir die Ressourcenlinks ändern, die vor dem Rendern der HTML-Seite geladen werden müssen, um den Effekt zu erzielen, dass die Ressourcen nicht heruntergeladen werden. Der Vorteil dieses Ansatzes besteht darin, dass er das Verhalten beim Laden von Ressourcen und beim Rendern von Seiten effizienter und genauer steuern kann. 🎜🎜Zusammenfassend kann die Anzeige von Seiten ohne Herunterladen von Ressourcen im Node.js-Client auf verschiedene Arten erreicht werden, und die spezifische Methodenauswahl hängt von der tatsächlichen Situation ab. Aber im Allgemeinen können wir durch die Beherrschung dieser Fähigkeiten eine bessere Kontrolle über das Rendern von Seiten und das Laden von Ressourcen erlangen und dadurch die Anwendungsleistung und das Benutzererlebnis verbessern. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert der Node.js-Client die Seitenanzeige, ohne Ressourcen herunterzuladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ist NodeJS nützlich?Nächster Artikel:Ist NodeJS nützlich?