我是dart编程的新手,我正在构建一个dart应用程序,我想从服务器端启动它。就像我输入网页的网址时加载我的主页一样。
在我的服务器端,我从dart网页的教程中获取了这段代码:
var server;
try{
server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V6, 4040);
}catch(e){
print("Couldn't bind to port 4044: $e");
exit(-1);
}
await for(HttpRequest req in server){
var file = new File('index.html');
if(await file.exists()){
print("Serving index.html.");
req.response.headers.contentType = ContentType.HTML;
try{
await file.openRead().pipe(req.response);
}catch(e){
print("Couldn't read file: $e");
exit(-1);
}
}else{
print("Couldn't open index.html");
req.response..statusCode = HttpStatus.NOT_FOUND..close();
}
}
但现在我的问题是关于客户端,我的元素没有加载,如css,图像等。
You can see the appearance here
我认为我需要在服务器端设置一些内容来加载它。它是什么?
答案 0 :(得分:1)
使用核心dart:io
方法提供文件通常不是最简单的方法。看看shelf
,f.e。它是一个非常巧妙的框架,用于创建具有大量中间件等插件和扩展的服务器应用程序。
在您的情况下,您似乎只想提供静态内容。我建议您使用shelf_static
。它会是这样的:
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_static/shelf_static.dart';
void main() {
var handler = createStaticHandler('your-web-directory/',
defaultDocument: 'index.html');
io.serve(handler, InternetAddress.LOOPBACK_IP_V6, 4040);
}