0

- - 更新 - -

使用以下方法使其工作:

  • 网页包
  • 打字稿
  • ts装载机
  • 反应
  • 反应域
  • @types/反应
  • @types/react-dom
  • office-ui-fabric-react

一旦我运行了一个简单的 react 示例,就很容易为 fabric-react 做同样的事情。

一些不错的教程:


----原帖----

作为一个新手React/node我想在使用中创建一个测试应用程序Visual Studio 2017Fabric ReactFabric,因为我想采用 Office 的外观)。到目前为止,我已经花费了无数个小时来弄清楚如何让它工作,并遇到一个又一个问题(例如创建package.json、安装Gulp等)。关于这个主题有很多教程,但它们似乎都有点分散或仅在依赖项中的 1 个上。

首先:

  • 我想构建一个 Web 应用程序 - 非常简单/基本,用于测试目的,并且只使用一些 Fabric UI 组件。
  • 我在 Visual Studio 2017 中创建这个 Web 项目作为 ASP.NET Core Web 应用程序 (.NET Core)
  • 我的 Visual Studio 2017 版本是:Community 2017,版本 15.2 (26430.13)
  • 使用 Fabric-React(而不是 FabricJS)
  • 按照http://dev.office.com/fabric#/get-started的建议将其与 Gulp 一起使用

到目前为止,我使用了以下文档:

可能还有一些我忘记了..

完成的步骤:

  1. 已安装Node(v6.11.2)
  2. 创建了我的名为 Test2 的 Web 项目
  3. npm使用 Nuget Package 安装程序将 (v3.10.10) 添加到我的项目中
  4. 创建了package.json文件。不确定了,在 100 次测试之后,如果我手动使用npm init或者这是通过在我的项目中安装 npm 自动完成的,无论如何它在我的项目中:

在此处输入图像描述

  1. 已安装gulp(使用此链接What is the correct way to set up gulp in Visual Studio 2017?),简短的总结,我使用 Bundler & Minifier 扩展将我的 bundleconfig.json 文件转换为 Gulp。
  2. 使用(工作)测试是否Gulp运行(并更新 package.json Task runner explorer): 在此处输入图像描述
  3. 按照此处的说明安装了 office-ui-fabric-react ( https://dev.office.com/fabric#react ),还按照此处的说明安装了 react 和 react-dom ( http://dattabase.com/sharepoint-app-织物-ui-react-part-1-3/ )
  4. 在我的文件中添加了一堆代码site.js(在我的 MVC 视图中链接到) - 添加了此处列出的命令栏 react-fabric 代码:http: //dev.office.com/fabric#Variants

这是我卡住的部分。首先,由于不熟悉一般的反应,我不确定是否应该将这样的组件添加到我的视图中。其次,它不起作用并给我以下错误:

site.js:5 Uncaught SyntaxError: Unexpected token import

有谁知道是哪一步出错了?一些附加信息: Package.json 包含:

{
  "name": "test2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "del": "^3.0.0",
    "gulp": "^3.9.1",
    "gulp-concat": "^2.6.1",
    "gulp-cssmin": "^0.2.0",
    "gulp-htmlmin": "^3.0.0",
    "gulp-uglify": "^3.0.0",
    "merge-stream": "^1.0.1"
  },
  "dependencies": {
    "office-ui-fabric-react": "^4.34.0",
    "react": "^15.6.1",
    "react-dom": "^15.6.1"
  }
}

site.js 包含:

import * as React from 'react';
import { assign } from 'office-ui-fabric-react/lib/Utilities';
import { CommandBar } from 'office-ui-fabric-react/lib/CommandBar';
import { Toggle } from 'office-ui-fabric-react/lib/Toggle';

export class CommandBarBasicExample extends React.Component<any, any> {

    constructor(props: any) {
        super(props);
        this.state = {
            isSearchBoxVisible: true,
            areNamesVisible: true,
            areIconsVisible: true
        };
    }

    public render() {
        let { items, overflowItems, farItems } = this.props;
        let { isSearchBoxVisible: searchBoxVisible, areIconsVisible: iconsVisible, areNamesVisible: namesVisible } = this.state;

        let filteredItems = items.map((item: any) => assign({}, item, {
            name: namesVisible ? item.name : '',
            icon: iconsVisible ? item.icon : ''
        }));

        let filteredOverflowItems = overflowItems.map((item: any) => assign({}, item, {
            name: namesVisible ? item.name : '',
            icon: iconsVisible ? item.icon : ''
        }));

        let filteredFarItems = farItems.map((item: any) => assign({}, item, {
            name: namesVisible ? item.name : '',
            icon: iconsVisible ? item.icon : ''
        }));

        return (
            <div>
                <Toggle
                    label='Show search box'
                    checked={searchBoxVisible}
                    onChanged={isSearchBoxVisible => this.setState({ isSearchBoxVisible })}
                    onText='Visible'
                    offText='Hidden'
                />
                <Toggle
                    label='Show names'
                    checked={namesVisible}
                    onChanged={areNamesVisible => this.setState({ areNamesVisible })}
                    onText='Visible'
                    offText='Hidden' />
                <Toggle
                    label='Show icons'
                    checked={iconsVisible}
                    onChanged={areIconsVisible => this.setState({ areIconsVisible })}
                    onText='Visible'
                    offText='Hidden' />
                <CommandBar
                    isSearchBoxVisible={searchBoxVisible}
                    searchPlaceholderText='Search...'
                    elipisisAriaLabel='More options'
                    items={filteredItems}
                    overflowItems={filteredOverflowItems}
                    farItems={filteredFarItems}
                />
            </div>
        );
    }
}

我的项目概述:

在此处输入图像描述

4

1 回答 1

2

您尝试运行的示例在TypeScript中给出,但您似乎将其作为节点 (JavaScript) 应用程序运行。

打字稿应该全局安装(npm install typescript -g)。然后,您可以通过键入来编译.ts.tsx从命令行编译tsc site.tsx。请注意,文件类型应该是tsx包含 JSX 模板的文件,并且应该是.ts包含常规 TypeScript 的文件。

我对你的建议是遵循这个关于如何使用 Webpack 使用 TypeScript 创建新的 React 应用程序的优秀示例。熟悉 Gulp 作为任务运行器是件好事,但 Gulp 绝不是 React 开发所必需的。

启动并运行示例后,您可以包含 office-ui-fabric-react 并使用这些组件创建应用程序。

于 2017-09-03T10:13:04.447 回答