2017-06-26 5 views
0

Ich versuche eine Webseite zu erstellen, die mit JavaScript interagiert und JSON-Daten an Rust-Funktionen sendet, dann rendert sie die www Dateien. Die Struktur meines Projektes ist:Wie rende ich eine Webseite mit dem Nickel-Framework?

/.. 
    /src 
    /www 
    |___index.html 
    |___/css 
    |  |__style.css 
    | 
    |___/javascript 
    |    |__javascript-supp.js 
    |___/images 
       |__myImg.png 

main.rs

use nickel::{Nickel, HttpRouter, StaticFilesHandler, NickelError, Request, Response, 
      MiddlewareResult}; 
use std::collections::HashMap; 

fn tmpl_handler<'a>(_: &mut Request, res: Response<'a>) -> MiddlewareResult<'a> { 
    let mut data = HashMap::<&str, &str>::new(); 

    // add data for render 
    // name = {{ name }} in template 
    data.insert("name", "Nickel"); 

    res.render("www/", &data) 
} 

fn main() { 
    let mut server = Nickel::new(); 

    server.utilize(StaticFilesHandler::new("www/")); 
    server.get("/login/*", tmpl_handler); 

    server.listen("127.0.0.1:6767"); 
} 

index.html

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <script src=javascript/javascript.js></script> 
    <link rel="stylesheet" type="text/css" href="css/style.css"> 
    <title>Encryptor Test</title> 
    </head> 

    <body> 
<div class=header> 
    <h1> 
     Hello {{ name }}! 
    </h1> 
</div> 
    <div class=main-row> 

     <div class="col-3 menu"> 
      <ul> 
      <li>Login</li> 
      <li>Download File</li> 
      <li>Upload File</li> 
      <li>Exit</li> 
      </ul> 
     </div> 

     <div class="col-9 context-area"> 
     </div> 
    </div> 
    <div class=footer></div> 
    </body> 
</html> 

Dieser Code arbeitet bis:

server.utilize(StaticFilesHandler::new("www/")); 

Ich möchte die Daten senden $name = "Nickel" und render the index.html.

Wie mache ich das ganze www/ Verzeichnis, so dass nach 127.0.0.1:6767/login die ganzen Seite wird da sein (JS, CSS und Bilder) und nicht nur Klartext zu besuchen?

Ich kann die CSS-Datei auf Anfrage bereitstellen.

Antwort

0

Sie müssen erneut nutzen, um das www Verzeichnis nach der GET-Anfrage:

server.get("/login", tmpl_handler); 
server.utilize(StaticFilesHandler::new("www/")); 

arbeiten ... auch wenn es nicht wirklich gut scheint.

Verwandte Themen