【问题标题】:Start dart application from Server and load elements从服务器启动 dart 应用程序并加载元素
【发布时间】:2016-04-04 18:09:56
【问题描述】:

我是 dart 编程的新手,我正在构建一个 dart 应用程序,我想从服务器端启动它。就像我输入网页的 url 时加载我的主页一样。

在我的服务器端,我从 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

我认为我需要在服务器端设置一些东西来加载它。这是什么?

【问题讨论】:

  • 我假设您为 Dart 服务器提供的服务是在 Dart 浏览器应用程序 (build/web/**) 上运行 pub build 的结果输出?

标签: dart


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2016-04-10
    • 2018-05-27
    • 2015-07-22
    • 2014-10-24
    相关资源
    最近更新 更多