- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Dart 页面 http://pub.dartlang.org/doc/#adding-a-dependency描述如何让 dart 文件 (parser_test.dart) 使用 'import "package:..." 导入样式从其自己的包中导入文件。这似乎暗示这是一件好事——比使用相对路径更好。显示的此示例适用于 test 中的一个文件,该文件似乎很特殊。但是,为什么从包中的 lib 导入同一个包 lib 文件没有意义。也许它确实有意义,但如果是这样,pub 更新 并不会让它变得方便。
foo/
/lib/
foo_lib_1.dart
foo_lib_2.dart
src/
foo_lib_1/
foo_lib_1_impl.dart
foo_lib_2/
foo_lib_2_impl.dart
假设foo_lib_2使用foo_lib_1。 foo_lib_2.dart 有两个选项:
我的猜测是建议方法是驻留在lib下的任何此类导入的第一个方法。我认为这是 pub update 的原因似乎会自动在 bin、test< 的 packages 文件夹中提供软链接(soft link)/em>,或示例到foo,例如foo -> ../lib。然而,它不会对顶级 foo 中的 packages 文件夹执行相同的操作。这意味着要使第二种类型的导入(即包导入)起作用,您需要添加:
foo:
path: lib
到 pubspec.yaml 中 foo 的依赖项。一个库使用包样式导入导入另一个库(不是在 test、bin 或 example 中)是否有任何优点或缺点从它自己的包中?明显的不一致是否有原因?
<小时/>接受下面的答案后,我仍然没有看到它。这是我在 shell session 中看到的内容,我想使这种行为与答案相一致。任何解释表示赞赏。我使用 emacs 而不是 DartEditor,因此这里使用的是老式命令行方法。
### Show all files, one dart library file and one yaml, plus empty
### lib and test folders
user@user-thinkpad:/tmp/uml_codegen_sample$ ls -R
.:
lib pubspec.yaml test
./lib:
plusauri.dart
./test:
### Show contents of pubspec
user@user-thinkpad:/tmp/uml_codegen_sample$ cat pubspec.yaml
name: domain_model
version: 0.0.1
description: >
Auto-generated support from /home/user/plusauri/modeling/plusauri.xmi.json
dependencies:
ebisu:
path: /home/user/open_source/codegen/dart/ebisu
### Run pub install and show the changes. Note there is a soft
### link to packages from test, but not lib.
user@user-thinkpad:/tmp/uml_codegen_sample$ pub install
Resolving dependencies...
Dependencies installed!
Some packages that were installed are not compatible with your SDK version 0.4.7+5.r21658 and may not work:
- 'pathos' requires >=0.5.0+1
You may be able to resolve this by upgrading to the latest Dart SDK
or adding a version constraint to use an older version of a package.
user@user-thinkpad:/tmp/uml_codegen_sample$ ls -R
.:
lib packages pubspec.lock pubspec.yaml test
./lib:
plusauri.dart
./packages:
domain_model ebisu pathos
./test:
packages
### Note here the program does not work, and suspiciously pub
### install put no packages link under lib like it did test
user@user-thinkpad:/tmp/uml_codegen_sample$ dart lib/plusauri.dart
Unable to open file: /tmp/uml_codegen_sample/lib/packages/ebisu/ebisu_utils.dart'file:///tmp/uml_codegen_sample/lib/plusauri.dart': Error: line 5 pos 1: library handler failed
import "package:ebisu/ebisu_utils.dart" as EBISU_UTILS;
^
### Copy the same dart file to test to show that it can run there
### just fine
user@user-thinkpad:/tmp/uml_codegen_sample$ cp lib/plusauri.dart test/
user@user-thinkpad:/tmp/uml_codegen_sample$ dart test/plusauri.dart
Main for library plusauri
user@user-thinkpad:/tmp/uml_codegen_sample$
### Finally, manually create the soft link in lib, to show it will
### then run
user@user-thinkpad:/tmp/uml_codegen_sample$ ln -s ../packages lib/packages
user@user-thinkpad:/tmp/uml_codegen_sample$ dart lib/plusauri.dart
Main for library plusauri
最佳答案
实际上,您绝对可以使用 package:foo/foo_lib_1.dart
语法进行导入,而无需更改 pubspec.yaml
甚至创建 pubspec。首先是 yaml
!
你可以看到,从语言层面来说这是正确的,在这个测试中:https://github.com/dart-lang/bleeding_edge/blob/master/dart/tests/standalone/package/packages/package1.dart
野外的一个例子是:https://github.com/kevmoo/hop.dart/blob/master/lib/hop_tasks.dart#L17
<小时/>我不认为以某种方式编写有任何好处,只是编写相对路径稍微短一些。
从项目结构的角度来看,当我深入到不会向用户公开的子目录时,我会使用相对路径导入。 src
通常被视为外部用户看不到的具体实现细节,因此请使用您想要的内容的相对路径。
但是,如果您在多个目录中工作,那么您应该使用 package:
导入来强化各个部分是独立且可互换的这一理念。在 lib 目录本身中,您想说这两个库虽然可能相互依赖,但可以单独存在并且不受其物理位置的约束。
我建议不要在导入中使用 ../
,因为它很脆弱,并且如果/当您修改目录结构或部署时可能会以奇怪的方式损坏。
关于dart - 如何让库从同一个包导入库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16135458/
通过终端,您可以使用命令 - “SetFile -a B 文件名” 以编程方式,我认为我应该通过[[NSFileManager defaultManager] createDirectoryAtPat
嗨,正在尝试书中的一些示例:Practical Graph mining with R对于子图挖掘: library(subgraphMining) library(igraph) graph1 =
代码中的相同问题: class Foo { int getIntProperty () { ... } CustomObject getObjectProperty () { ... }
所以这可能是一个愚蠢的问题,但它已经困扰我一段时间了。 使用 React,我创建了两个组件(Buttons.js 和 Message.js),每个组件都有一个导出。但是,现在我希望将这两个组件用作 n
从今天早上开始,我发现我无法再从某个范围安装任何 NPM 包(或任何具有依赖项的包)。例如,如果我输入 npm i webpack 我会收到以下错误... npm ERR! code E401 npm
我在这里搜索过,Angular 2, @ngtools/webpack, AOT ,但对我不起作用。我运行了 npm install 命令。我正在做的是创建一个新的 Angular 2 项目。当我运行
情况: 我有一个 Swift 包,将其命名为 lib。 lib 位于其自己的存储库中。在lib的仓库中,有一堆本地包;也就是说,这些包是在 lib 中定义的,使用本地路径依赖格式 .package(p
我想在工作中学习和使用nodejs,但是在使用 de npm 命令安装模块/包时遇到网络问题。我是否可以使用我的家用计算机构建完整的 Node js 包,然后将其安装在另一台计算机(我的工作场所计算机
我需要将一些 .tar.bz2 格式的非 Python 包转换为 Anaconda/miniConda .egg 文件并安装它们。为此,我需要一个适用于 Windows 的 bld.bat 文件。互联
我需要共享库文件 libthrift-0.9.3.so 作为其他包的依赖项。我在构建 thrift-0.9.3 包时看到编译问题(我确实从 https://thrift.apache.org/down
我尝试在 R 版本 3.5.0 中安装“arcgisbinding”包。但是我失败了,得到以下错误和警告。 Installing package into ‘C:/Users/Lenovo/Docum
我尝试在 R 版本 3.5.0 中安装“arcgisbinding”包。但是我失败了,得到以下错误和警告。 Installing package into ‘C:/Users/Lenovo/Docum
我试图在 flutter 中测试这个应用程序,但我无法运行该应用程序,因为出现此错误“名称‘Page’在库‘package:burn_off/widgets/page.dart’和‘package’中
试图理解和学习如何编写包...用我一直使用的东西进行测试,记录... 您能帮我理解为什么“日志”变量不起作用...并且屏幕上没有日志记录吗? 谢谢! 主要文件: #!/opt/local/bin/py
我尝试运行此使用 Google 云的代码。 import signal import sys from google.cloud import language, exceptions # creat
我想知道是否有人找到了一个很好的 R 包来分析眼动追踪数据? 我遇到了 eyetrackR,但据我所知,没有可用的英文支持文档: http://read.psych.uni-potsdam.de/pm
我正在 R 上制作一个包。我有两个函数共享一个变量(全局)。 如何将其导入到包中? 例如, m<-0 f<-function() { m <- m+1 } g<-function() { m <- m
我用 C 为 Lua 编写了很多模块。每个模块都包含一个 Lua 用户数据类型,我像这样加载和使用它们: A = require("A") B = require("B") a = A.new(3,{
我正在尝试在 R 中的 Ubuntu 上安装 xlsx 包,以便使用允许在 R 中插入链接然后将它们导出到 Excel 的功能。 话虽如此,我根本无法安装该软件包。 显然它必须与 rJava 一起使用
我想在 Haskell 中做一些蒙特卡洛分析。我希望能够编写这样的代码: do n <- poisson lambda xs <- replicateM n $ normal mu sigma
我是一名优秀的程序员,十分优秀!