2017-12-23 3 views
2

Ich versuche, eine Webseite in angularjs mit Puppenspieler prerender. Der Stapel meiner Anwendung ist MEAN (Mongo-Express-Angular-NodeJs).Puppenspieler und angularjs html render Ausgabe

Rendering-Logik ist wie folgt:

var args = [ 
    '--disable-gpu', 
    '--disable-setuid-sandbox', 
    '--no-sandbox', 
    ]; 


var getPageContent = async function getPageContent(request) 
{ 
    var url = getUrl(request); 
    var browser = await puppeteer.launch({headless: true, handleSIGINT: false, args: args}); 
    var page = await browser.newPage(); 
    await page.goto(url, {waitUntil: 'networkidle2'}); 
    var html = await page.content(); 
    await browser.close(); 
    return html; 
}; 

Alles funktioniert gut, und ich tun, um die HTML-Code der Seite bekommen. Allerdings bekomme ich den HTML-Code in der eckigen Form. Wie unten:

<title> {{meta.title}} </title> 
<meta property="og:title" content="{{meta.title}}"> 
<meta property="og:description" content="{{meta.description}}"> 
<meta property="og:image" content="{{meta.imageSrc}}"> 

Was ich will, ist tatsächlicher Inhalt der Seite und nicht die {{}}. Etwas wie:

<title> My Page </title> 
<meta property="og:title" content="My Page"> 
<meta property="og:description" content="Page about saving humanity"> 
<meta property="og:image" content="url_to_image"> 

Ich frage mich, ob dies ein Problem mit page.content()? Oder gibt es eine andere Puppenspieler-API, die das eigentliche Roh-HTML der Seite zurückgibt?

Antwort

0
module.exports.getmessages = async (page, selector, message) => { 
const messages = []; 
const bodyHandle = await page.$$(selector); 
console.log(" table of messages length : ", bodyHandle.length); 
const length = bodyHandle.length; 
console.log(message + "switch ordre after load :\n") 
for (let i = 0; i < length; i++) { 
    const element = bodyHandle[i]; 
    const content = await page.evaluate(body => body.textContent, element); 
    console.log("message" + i + ": ", content + "\n"); 
    messages[i] = content; 
} 
return messages;} 

Hallo, ich simular Code mit vue js verwenden und ich bekomme einen HTML-Code, mit dem von vue erstellt richtigen Wert, ich hoffe, dass der Code für Sie arbeiten;)