如何在 Symfony 中设置 Typescript?

2023-11-21

问题:

如何使用 Symfony 设置 Typescript,并对 Symphony 配置文件进行最少的配置更改?

该解决方案应解决以下几点:

  1. 私有 typescript 目录中的 Typescript MVC 模式:

    src > XBundle > 资源 > 私人 > 打字稿

  2. Javascript 包编译于:

    src > XBundle > 资源 > 公共 > js

  3. 私有目录应包含不同页面的多个应用程序。 (如果应用程序需要自己的tsconfig.json文件,没问题)

  4. 一个应用程序很简单(例如)home.app.ts导入(例如)a搜索组件.ts and a 聊天组件.ts

  5. 编译后的“应用程序”应位于公共 > js第 (2) 点中提到的存储库应命名(示例取自第 (4) 点)home.bundle.js

  6. In the public > js文件夹,应该只有x.bundle.js files

  7. 将捆绑包添加到我的树枝文件中,并调用我的视图应该立即运行该捆绑包。我不应该添加额外的脚本来调用“module”(这就是我想避免的原因AMD / System )

我不是在寻找什么:

I'm not寻找解决方案react and angular但使用的通用解决方案/websymfony 项目根目录(甚至是包中的 Resources 目录)。

大多数关于这个话题的文章都是关于symfony2并尝试整合react and angular.

我不是在寻找 npm 和 tsc 的安装教程。

我不需要自动编译。我使用 Phpstorm 所以它会自动执行。


我最终使用了 webpack 来实现这一点。支持@zerkms。这是一项正在进行的工作,可以更好地优化。

安装:

  1. Install webpack,我个人是全局安装的。 (不确定如何配置 Phpstorm 使用 webpack,似乎没有直接内置的系统)
  2. Go to src > XBundle > Resources > private > typescript

  3. npm init -y

  4. 安装开发依赖项:npm install --save-dev awesome-typescript-loader and npm install --save-dev typescript

边注:

@Morgan Touverey Quilling,建议在本地安装 webpack,你的选择:

npm install --save-dev webpack

配置:

这是我的文件夹结构:

├── XBundle/
│   ├── Controller
│   ├── Resources
│   │   ├── config
│   │   ├── private
│   │   │   ├── typescript
│   │   │   │   ├── components
│   │   │   │   │   ├── auth
│   │   │   │   │   │   ├── auth.component.ts
│   │   │   │   │   ├── search
│   │   │   │   │   │   ├── search.component.ts
│   │   │   │   ├── services
│   │   │   │   │   ├── http.service.ts
│   │   │   │   ├── node_modules
│   │   │   │   ├── package.json
│   │   │   │   ├── webpack.config.js
│   │   │   │   ├── tsconfig.json
│   │   ├── public
│   │   │   ├── js
│   │   │   │   ├── build
│   │   │   │   │   ├── auth.bundle.js

webpack.config.js 这个配置可能可以进一步简化。

对于每个包,应该创建一个指向主文件的新配置。请记住重命名输出包。

每页不应包含超过一个捆绑包。如果您需要(例如)auth.bundle.jssearch.bundle.js在主页上,您可能应该创建一个home.component.ts使用auth.component.ts and search.component.ts并在中创建一个配置webpack.config.js来创建home.bundle.js

const path = require('path');

//Common configurations
let config = {
    module: {
        loaders: [
            { test: /\.ts$/, loader: 'awesome-typescript-loader' }
        ]
    },
    resolve: {
        extensions: ['.ts']
    }
};

//Copy and paste this for as many different bundles
//as required
let authConfig = Object.assign({}, config, {
    entry: path.join(__dirname, 'components/auth','auth.component.ts'),
    output: {
        path: path.join(__dirname, '../../public/js/build'),
        filename: 'auth.bundle.js',
        library: 'XApp'
    }
});

//Add each config here.
module.exports = [
    authConfig
];

tsconfig.json

{
  "compileOnSave": true,
  "compilerOptions": {
    "sourceMap": true,
    "moduleResolution": "node",
    "lib": ["dom", "es2015", "es2016"]
  },
  "exclude": [
    "node_modules"
  ]
}

Run

Type webpack在目录中webpack.config.js居住。

将 JS 添加到 Twig 文件中

在您的模板之一中的某处。

{% block javascripts %}
    {# More stuff here #}
    {% javascripts
    '@XBundle/Resources/public/js/build/auth.bundle.js'
    %}
    {# More stuff here #}
    {% endjavascripts %}
{% endblock %}

并为任何新运行以下命令bundles.js首次在 symfony 项目的根目录中创建:

php bin/console assets:install
php bin/console assetic:dump
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Symfony 中设置 Typescript? 的相关文章

随机推荐

  • Google 地理编码 v2 API 突然停止工作

    地理编码 v2 API 意外停止 e g 我无法从 API 获取经纬度 服务器的输出是 Status code 610 request geocode 我搜索了status 610但找不到任何相关信息 Thanks 服务已停止 今天是 3
  • IIS 中的匿名访问和 NTLM 身份验证

    我有一台使用 IIS 设置的服务器 并且我的站点有一些允许匿名访问的页面和一些需要 集成 Windows 身份验证 的页面 在 IIS 的 身份验证方法 屏幕上 您似乎可以同时启用 集成 Windows 身份验证 和匿名访问 但我读过的文档
  • Fieldset:中心图例

    正如之前多次询问的那样 但从未真正回答过 我想将图例放在字段集中 这个技巧在这里完美完成 我也为我的项目购买了它 http themeforest net item aloma liquid mobile template full scr
  • 使用 PostgreSQL 和 REF_CURSOR 的 JPA 2.1 StoredProcedureQuery

    我在 PostgreSQL 数据库中创建了一个函数 我想使用 JPA 2 1 的 StoredProcedureQuery 方法调用该函数 这是我的 PostgreSQL 查询 CREATE OR REPLACE FUNCTION get
  • 如何重命名路径以响应填充

    我有一个这样的查询 galleryModel find id galleryId populate model User path objectId select firstName lastName 结束响应objectId会是这样的 o
  • C++ 约束应该急切地评估还是惰性地评估?

    这个问题的主要目的是引起社区对 libstdc 范围不适用于 clang 的关注 https bugs llvm org show bug cgi id 46746 Avi Kivity 认为这是一个 gcc 错误 https gcc gn
  • 如何在 Scala 中定义保留前导标记的三元运算符?

    我正在编写一个生成 Scala 输出的代码生成器 我需要以这样的方式模拟三元运算符 即导致 的标记保持不变 例如转换表达式c p q to c something 简单的if c p else q不符合我的标准 因为它需要if before
  • jQuery.data 不再适用于窗口?

    我最近升级了我们项目的 jQuery 文件1 4 2 to 1 4 4看来截至1 4 3我们一直在使用的方式jQuery data已停止工作 我们有这样的代码 var events window data events if events
  • 命名空间/解决方案结构

    我很抱歉问了这样一个笼统的问题 但这对我来说可能是一个挑战 我的团队即将开始一个大型项目 该项目有望将多年来不断发展的所有随机一次性代码库整合在一起 鉴于该项目将涵盖整个公司的标准化逻辑实体 客户 员工 小任务 控制小任务的大任务以及公用事
  • AutoMapper 映射中的 foreach 中的额外迭代

    由于某种原因 我在 AutoMapper 地图定义中使用的循环迭代次数超出了应有的次数 地图定义 Mapper CreateMap
  • 如何使JScrollPane(在BorderLayout中,包含JPanel)平滑自动滚动

    我试图在 JScrollPanel 内有一个不同大小的 JPanel 可能比标准屏幕宽得多 目前效果很好 我已经将滚动条配置为手动正常工作 但是我希望 JPanel 不断向左 滚动 以便随着时间的推移显示整个内容 我找到的所有答案都特定于
  • vim 无法将 映射到 :tab next

    我的 vimrc 中有以下映射 map
  • 防止 LaunchedEffect 在配置更改时重新运行

    我只想在加载可组合项时运行代码一次 因此 我使用 LaunchedEffect 并将 key 设置为 true 来实现此目的 LaunchedEffect true do API call 该代码工作正常 但每当有任何配置更改 例如屏幕旋转
  • 从专业化自我的类别继承?

    这是有效的 C 吗 template
  • 如何使用 Python 检索给定用户的所有推文和属性?

    我正在尝试从 Twitter 检索数据 使用 Tweepy 作为在命令行输入的用户名 我想提取大量有关状态和用户的数据 因此提出了以下内容 请注意 我正在导入所有必需的模块 并且具有 oauth 键 只是未包含在此处 并且文件名是正确的 只
  • 跨虚拟环境使用不同版本的相同库

    我正在开发一个 python 项目 该项目在多个模块中具有依赖关系 举个例子说我的主模块使用另外 2 个模块 即module 1需要图书馆lib version 1 5 and module 2它使用相同的Library but versi
  • 从 C 中的路径名中提取基本路径

    Question 如何从 C 中的路径名中提取基本路径 C 语言或 C 运行时库中是否有内置函数可以从 C 中的路径名中提取基本路径 我问的基本上是相反的this问题 注意 我更喜欢跨平台解决方案 但我在 Windows 中工作 因此如果有
  • mapstruct - 将父字段值传播到嵌套对象的集合

    是否可以将值从父对象传播到嵌套对象的集合 例如 源 DTO 类 class CarDTO private String name private long userId private Set
  • 更改 UISearchBar TextField 的大小?

    我有一个 UITableView 侧面有一个索引 我想向其中添加一个 UISearchBar 但索引与 x 重叠以清除搜索 我注意到在 联系人 应用程序中 UISearchBar 中的文本字段已调整大小以适应这一点 但我无法弄清楚如何在我自
  • 如何在 Symfony 中设置 Typescript?

    问题 如何使用 Symfony 设置 Typescript 并对 Symphony 配置文件进行最少的配置更改 该解决方案应解决以下几点 私有 typescript 目录中的 Typescript MVC 模式 src gt XBundle