XWIKI的搭建

article/2025/8/27 2:21:06
原文地址:https://my.oschina.net/gywbest/blog/780569

一 应用背景描述

  在平时的运维工作中,把常规工作进行文档整理非常重要,无论是平时工作处理或是工作交接,实时的维护文档资料可以提高工作效率。如果采用传统的TXT文档或者Word文档来记录的话修改不太方便,采用在线WIKI可以更好的让大家实时地查看或者修改文档资料。

  Wiki系统做得比较好的是Confluence,但是Confluence需要购买License才能使用,网上也有破解版本的。对比多个开源WIKI系统,我们选择XWIKI作为我们的WIKI系统,因为它提供的功能与Confluence的功能非常相似,不需要学习任何语法格式,可以直接在线像编辑Word一样编辑WIKI页面。

  XWIKI有以下几个显著的功能特性:

  1)多语言支持,可以支持英文,中文,韩文,日文等

  2)可以上传附件

  3)支持LDAP方式认证登录

  4)可以将Office文档直接导入为WIKI页面,也可以将WIKI页面导出成Office文档或PDF文档

  5)使用者不需要学习任何WIKI语法格式,直接使用WYSIWYG编辑器进行WIKI页面的编辑。

  6)具有版本控制管理的功能,并且可以回退到之前的历史版本

  7)界面友好,功能丰富,内置搜索引擎,可以进行站内搜索。

  8)用户和组权限管理,空间和页面的权限管理

  9)邮件通知功能

  10)支持多种WIKI的语法格式,如Confluence,Markdown,Jspwiki,meidawiki,twiki等

本文使用的是CentOS6系列操作系统

二:安装JDK

1)JDK的安装与配置

①检查系统自带的JDK,为了避免不必要的麻烦,我们要卸载旧版本,安装新版本

运行#rpm -qa|grep jdk,我们看到系统自带了java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64,所以我们执行#rpm -e --nodeps java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64来卸载老版本

老版本卸载了,我们来安装新版本,打开Xmanager Enterprise 5,本人将事先下载的jdk-8u91-linux-x64.rpm传到服务器里/home目录下,进入/home目录,#cd /home,查看上传的结果#ls,我们可以看到文件已经到了目录下了,然后使用#rpm -ivh jdk-8u91-linux-x64.rpm进行安装

显示安装完毕,运行#java -version,查看到新版本的JDK已经安装完成了

②配置JDK环境

执行#vi /etc/profile,在结尾处加入以下蓝色内容,并保存退出(这里再强调下vi与vim编辑器的使用:用vi或者vim打开文件后,按A键是插入编辑模式,ECS键是退出编辑模式,编辑后shift+冒号键会出现冒号,wq是保存退出,q是退出,q!是不保存退出

JAVA_HOME=/usr/java/jdk1.8.0_91

export JRE_HOME=/usr/java/jdk1.8.0_91/jre      

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

修改后保存退出,执行# source /etc/profile,将改动写入配置文件即可,如果没有报错,那说明JDK安装布置完毕!

三.tomcat的安装与环境配置

①tomcat的安装与启动

本人将apache-tomcat-8.0.33.tar上传到/usr/local目录下,进入此目录

#cd /usr/local

#ls

可以看到tomcat文件,对文件进行解压缩

#tar -zxvf apache-tomcat-8.0.33.tar.gz

现在看到文件夹已经变成了tomcat,这说明我们已经安装完了,下面需要配置下环境

#vim /etc/profile.d/tomcat.sh,加入

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

保存退出,写入配置文件

#.  /etc/profile.d/tomcat.sh,

进入tomcat的bin目录

#cd /usr/local/tomcat/bin

启动tomcat

#catalina.sh start

tomcat启动了

②关闭防火墙,设置tomcat开机自启

   不关闭防火墙,可能无法访问tomcat;运行#service iptables stop,防火墙关闭,运行#chkconfig iptables off,让防火墙开机不启动(如下图)。

设置tomcat开机自启

#vi /etc/rc.d/rc.local,

加入

JAVA_HOME=/usr/java/jdk1.8.0_91

/usr/local/tomcat/bin/startup.sh start

可以让tomcat开机自启。(下图所示)

这个时候,可以访问本地的IP,后面加上:8080访问tomcat了,我的是http://192.1681.110:8080/,可以看到tomcat的访问界面了

不过这并没完,我们点击页面右侧的Manager App,会出现一个对话框,让输入用户名与密码,这是因为没有对tomcat的账户进行设置管理,所以我们进入#cd /usr/local/tomcat/conf目录下,对tomcat-users.xml进行编辑,运行#vim tomcat-users.xml,加入<role rolename="manager-gui"/>

<user username="tomcat" password="123456" roles="manager-gui"/>保存退出

用户名与密码可以自行设定(如下两张图所示)。

③编辑tomcat的server.xml修改8080端口描述设置编码为UTF8,并允许gzip压缩(下图白色字体)

#cd /usr/local/tomcat/conf

#vim server.xml,加入上图的白色部分URIEncoding="UTF-8"

                compression="on"

                compressionMinSize="2048"            compressableMimeType="text/html,text/xml,text/css,text/javascript,application/x-javascript:/>

保存退出

④配置JVM的内存大小和安装路径

#cd  /usr/local/tomcat/bin

#vim catalina.sh,加入JAVA_HOME="/usr/java/jdk1.8.0_91"

                  JAVA_OPTS="-Xmx3276m -XX:MaxPermSize=819m"

保存退出,tomcat的安装布置就完成了

 

四.Mysql的安装与配置

可以参考从零开始编译安装LAMP中mysql的编译安装:https://my.oschina.net/gywbest/blog/780495

运行#chkconfig,在其中看到mysql,就说明mysql可以开机自启了

现在可以说mysql是正确的安装了

运行#mysql -uroot -p,然后登陆,加入三句create database xwiki default character set utf8 collate utf8_bin;  grant all privileges on xwiki.* to xwiki identified by 'xwiki,./';  flush privileges;

这样就创建了xwiki数据库并赋予了权限(注意,mysql语句要用;作为结尾)完成后运行exit

这里多说一句:使用rpm包安装mysql,默认情况下,mysql相关文件会在/var/lib/mysql下,相关的控制文件my.cnf文件则在/usr下,请大家注意。

五.安装配置Nginx(可选)

默认XWIKI通过类似http://xxxx:8080/xwiki/的方式访问,可以配置Nginx转发。

本公司的xwiki是作为内网使用的,其实可以不安装nginx,但是为了xwiki教学,为了大家熟悉linux系统,所以这里还是对此进行下说明

1.安装nginx

#yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel,对于nginx,我们需要编译安装,这步是安装编译工具与库文件,这个需要一点时间,成功后系统会提示。

接下来,我们安装pcre

我们进入#cd /usr/local这个目录,创建一个webserver的文件夹,#mkdir webserver,然后#cdwebserver,将下载好的nginx-1.10.1.tar放入此文件夹里,解压缩#tar -zxvf nginx-1.10.1.tar,解压缩后,我们将这个文件夹改名#mv nginx-1.10.1 nginx,这样,文件夹就变成了nginx了(如下图)

这个先不管它,我们先去安装pcre,#cd /usr/local/src,将下载好的pcre-8.38.tar上传到此文件夹里,然后解压缩#tar -zxvf pcre-8.38.tar.gz

我们进入#cd /usr/local/src/pcre-8.38,这个目录,#./configure,开始编译安装pcre,这时候会弹出一大堆的提示,之后#make && make install开始编译安装,这需要一点时间,看到下图,说明安装结束

好,我们回到刚才的#cd /usr/local/webserver/nginx目录,#./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-httpstatus_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.38

之后#make,再 #make install (这两个过程有点长)期间可能会有报错,不过不用管,完成后我们运行# /usr/local/webserver/nginx/sbin/nginx -v看到下图则说明成功

到此,说明nginx安装完毕。

2.配置nginx

进入#cd /usr/local/webserver/nginx/conf,对相关控制文件进行修改#vim nginx.conf,按照图中进行修改

修改内容为:

 server {

        listen       80;

        server_name  xwiki.nbs.com;

        root  /usr/local/tomcat/webapps/xwiki;

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            rewrite ^ $scheme://$server_name/xwiki:$request_uri?permanent;

        }

        location ^~ /xwiki {

        # If path starts with /xwiki - then redirect to backend:XWiki application in Tomcat

        proxy_pass http://localhost:8080/xwiki;

       }

我们运行#  /usr/local/webserver/nginx/sbin/nginx -t来检查文件ngnix.conf的正确性,结果报错了

提示报错nginx: [alert] could not open error log file: open() "/usr/local/webserver/nginx/logs/error.log" failed (2: No such file or directory)

nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok

2016/07/24 13:12:56 [emerg] 28312#0: open() "/usr/local/webserver/nginx/logs/nginx.pid" failed (2: No such file or directory)

nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test failed,从这段提示可以看到,系统找不到/usr/local/webserver/nginx/logs/error.log这个文件,原来是文件夹里没有生成这个文件,不要紧,我们可以自己做一个文件,# cd /usr/local/webserver/nginx#mkdir logs,建立一个logs的文件夹,然后进入#cd logs,#vi error.log,使用编辑命令可以创造一个文件,然后保存退出,这样你就有了/usr/local/webserver/nginx/logs/error.log这个文件了,再次运行# /usr/local/webserver/nginx/sbin/nginx -t,如下图,说明ngnix.conf是正确的

运行# /usr/local/webserver/nginx/sbin/nginx,启动nginx

 

六.安装配置Office Server

将Apache_OpenOffice_4.1.2_Linux_x86-64_install-rpm_zh-CN.tar上传至/opt目录下,#cd /opt,对其解压缩#tar -zxvf Apache_OpenOffice_4.1.2_Linux_x86-64_install-rpm_zh-CN.tar

#cd /opt/zh-CN/RPMS,运行#yum -y localinstall *.rpm,这个需要一点时间,请耐心等待

接着,我们进入这个目录 #cd /opt/zh-CN/RPMS/desktop-integration,#ls,会看见四个rpm文件,我们要安装openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm

直接安装openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm会报错,所以使用#rpm -ivh --force  openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm,进行强制安装,如果出现上图的情况,说明安装成功了。

设置一直后台启动

#nohup  /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

查看服务是否启动(端口8100是否被soffice占用):

#netstat -lnp |grep 8100

如图显示一切正常。

 

七.安装xwiki并进行一些修改设置

①安装xwiki

#cd /usr/local/tomcat/webapps,然后建立一个xwiki的文件夹,#mkdir xwiki

将xwiki-enterprise-web-8.1.war上传到此目录

对xwiki的文件进行解压缩#cd /usr/local/tomcat/webapps/xwiki

                       #unzip xwiki-enterprise-web-8.1.war

 

将事先下载好的mysql-connector-java-5.1.9上传到/usr/local/tomcat/webapps/xwiki/WEB-INF/lib(如下图)

②修改xwiki的相关文件

hibernate.cfg.xml

#vim /usr/local/tomcat/webapps/xwiki/WEB-INF/hibernate.cfg.xml

去掉mysql的注释部分,并对一些地方进行修改(我分成两张图说明)

上图修改后内容为

<!-- Configuration for the default database.

         Comment out this section and uncomment other sections below if you want to use another database.

         Note that the database tables will be created automatically if they don't already exist.

 

        

    <property name="connection.url">jdbc:hsqldb:file:${environment.permanentDirectory}/database/xwiki_db;shutdown=true</property>

    <property name="connection.username">sa</property>

    <property name="connection.password"></property>

    <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>

    <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

 

    <property name="hibernate.connection.charSet">UTF-8</property>

    <property name="hibernate.connection.useUnicode">true</property>

    <property name="hibernate.connection.characterEncoding">utf8</property>

 

    <mapping resource="xwiki.hbm.xml"/>

    <mapping resource="feeds.hbm.xml"/>

    <mapping resource="activitystream.hbm.xml"/>

    <mapping resource="instance.hbm.xml"/>

    <mapping resource="mailsender.hbm.xml"/>

-->

此图修改后内容为

   <!-- MySQL configuration.

         Uncomment if you want to use MySQL and comment out other database configurations.

        

-->

    <property name="connection.url">jdbc:mysql://localhost/xwiki?useSSL=false</property>

    <property name="connection.username">root</property>

    <property name="connection.password">123456</property>

    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

    <property name="dbcp.poolPreparedStatements">true</property>

    <property name="dbcp.maxOpenPreparedStatements">20</property>

    <property name="connection.useUnicode">true</property>

    <property name="connection.characterEncoding">UTF-8</property>

    <mapping resource="xwiki.hbm.xml"/>

    <mapping resource="feeds.hbm.xml"/>

    <mapping resource="activitystream.hbm.xml"/>

    <mapping resource="instance.hbm.xml"/>

<mapping resource="mailsender.hbm.xml"/>

 

Xwiki.properties

#cd /usr/local/tomcat/webapps/xwiki/WEB-INF

#vim xwiki.properties

这里有三处更改

注意绿色字体内的修改内容,其实是去掉了#号,这样就让此更改生效了

openoffice.autoStart=ture

openoffice.homePath=/usr/lib64/libreoffice

这是两处更改后的内容,不仅去掉了#,也修改了参数,这样,xwiki.properties就修改完了

 

Xwik.cfg

#cd /usr/local/tomcat/webapps/xwiki/WEB-INF

#vim xwiki.cfg

共四处要修改

这三处是修改附件存储方式并使其生效,具体内容是

-# The main (documents) storage. [Since 3.4M1] default is hibernate.

# xwiki.store.main.hint=hibernate

#-# The attachment storage. [Since 3.4M1] default is hibernate.

 xwiki.store.attachment.hint=file

#-# The document versioning storage. [Since 3.4M1] default is hibernate.

# xwiki.store.versioning.hint=hibernate

#-# The attachment versioning storage. Use 'void' to disable attachment versioning. [Since 3.4M1] default is hibernate.

 xwiki.store.attachment.versioning.hint=file

#-# The document recycle bin storage. [Since 3.4M1] default is hibernate.

# xwiki.store.recyclebin.hint=hibernate

#-# The attachment recycle bin storage. [Since 3.4M1] default is hibernate.

 xwiki.store.attachment.recyclebin.hint=file

开启管理员管理功能,也是修改次文件,修改只是去掉了#,xwiki.superadminpassword=system

记得保存退出,好了,xwiki的相关文件就修改完成了,下一步我们重启服务器,#reboot

系统重启后,稍过片刻,因为tomcat自己启动需要一些时间,打开浏览器,在页面输入http://192.168.1.110:8080/xwiki/,这个地址根据每个人IP定,你就可以看到xwiki的界面了

注意,这只是布置好了最基本的xwiki界面,里面很多插件还没有安装,无法正常使用,所以我们要进行下一步工作,那就是让xwiki在线升级自己的插件。

 

七.xwiki插件在线升级

刚才我们看到了xwiki的引导界面了,我们点下continue,稍等,系统启动较慢,不要操之过急,否则会跳过升级插件的界面(这里说一下,万一你不小心跳过了界面,或者xwiki没有响应,你可以将tomcat的缓存文件删除后重启机器再进入xwiki界面,目录是/usr/local/tomcat/temp,见下图)

将temp内的文件都删除

这是xwiki的注册界面,我们可以在此注册

注意,这一步是需要升级xwiki的插件了,点击install

这是正在升级的状况了,中间会有手动点击continue(install)的时候,请注意,务必保持网络通畅,如果报错,请刷新页面。

经过一段时间后,出现这个界面,就说明你的xwiki插件安装完毕了,继续点击continue

这里接着点击继续

当你看到这个界面的时候,就说明你的进入了xwiki主要页面了,恭喜。

下面我们要把语言改成中文

这是在刚才那个页面的左上角,点击红圈内,进行登录(用户名可以是自己注册的,也可以是系统默认的superadmin,system)

点击Administer Wiki,然后会出现下图的内容

点击Configuration

点击Localization

将语言的选项改为zh,点下save,你就可以看到中文界面了,至此,xwiki的安装工作就算完成了:)



http://chatgpt.dhexx.cn/article/dlFL28KW.shtml

相关文章

xwiki部署_xwiki8.2.1安装部署

系统环境centos 6.5 实现方式&#xff1a;xwikinginxtomcatmysql 包获取&#xff1a;http://www.xwiki.org/xwiki/bin/view/Main/Download 版本&#xff1a;xwiki8.2.1 nginx 随意 jdk&#xff1a;必须1.8 tomcat&#xff1a;7或者以上 mysql&#xff1a;5.5或者以上 nginx、jd…

xwiki部署_Linux下Xwiki安装部署详解

一、Xwiki简介 XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。XWiki是一款基于java所编写的wiki&#xff0c;它可以运行在如Tomcat&#xff0c;Jetty&#xff0c;JBoss&#xff0c;WebLogic&#xff0c;WebSphere等Servlet容器上并利用关系型数据库(HSQL, MyS…

xwiki部署_xwiki 搭建心得

吐个槽可忽略 这几天不是接到个新活&#xff0c;要把 xwiki 融合到我们的项目里&#xff0c;于是我找到原来负责修改 xwiki 界面的同事&#xff0c;让他把代码给我。等我拿到手一看&#xff0c;我的内心几乎是崩溃的&#xff0c;竟然没有做代码版本控制&#xff0c;全部在初始文…

xwiki

下载war放到tomcat的webapps目录下&#xff1a; http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-war/11.10.3/xwiki-platform-distribution-war-11.10.3.war 安装参考&#xff1a; https://juejin.im/post/5c1466d0f265…

xwiki使用指南

修改配置&#xff0c;启动超级管理员&#xff0c;启用默认语言。实现汉化&#xff0c;设置权限&#xff0c;禁止外部注册&#xff0c;设置邮箱激活&#xff0c;修改管理员密码&#xff0c;加入新用户。 1.启动超级管理员&#xff0c;编辑xwiki.cfg文件vim /usr/local/XWiki/web…

基于xwiki部署企业内部知识管理平台

1. Xwiki介绍 印象笔记、有道笔记、为知笔记都是挺好的商用笔记知识管理软件&#xff0c;不过有些敏感文件是不太好放到互联网上的。 所以搭建一套内部局域网知识管理平台是非常有意义的&#xff0c;在开源Wiki系统中&#xff0c;XWiki是做的最好的产品之一。因为它提供的功能…

xwiki初步认识

1、xwiki安装 下载xwiki的war包&#xff0c;tomcat&#xff0c;mysql&#xff0c;各自安装配置好。在mysql中建好xwiki库&#xff0c;将war包放入tomcat中&#xff0c;在解压出来的文件中修改hibernate.cfg.xml的数据库连接配置&#xff0c;如2、字符集更改的图中。注意删除war…

Xwiki安装部署详解

一、Xwiki简介XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。XWiki是一款基于java所编写的wiki&#xff0c;它可以运行在如Tomcat&#xff0c;Jetty&#xff0c;JBoss&#xff0c;WebLogic&#xff0c;WebSphere等Servlet容器上并利用关系型数据库(HSQL, MySQ…

xwiki安装部署

xwiki 下载&#xff0c;版本选择以及与jdk&#xff0c;servlet容器&#xff0c;数据库和JDBC的版本对应关系&#xff0c;可以参考我另一篇关于这个的文章 https://blog.csdn.net/qq_38417282/article/details/125271765 首先进入xwiki官网 在documentation中找到Admin Guide—…

设计模式之装饰器模式详解

设计模式之装饰器模式详解 文章目录 设计模式之装饰器模式详解一、什么是装饰器模式二、装饰器模式的角色组成三、装饰器模式通用写法示例四、装饰器模式业务中的应用举例五、装饰器模式优缺点 一、什么是装饰器模式 装饰器模式&#xff08;Decorator Pattern&#xff09; 也称…

TS装饰器

通过本文你可以知道什么 装饰器的发展历程JS和TS装饰器有何不同Angular中的装饰器到底是什么装饰器的定义&#xff0c;语法&#xff0c;作用reflect-meta是什么及如何使用 前言 我们平常开发中或多或少的听说或使用过装饰器&#xff0c;也切身感受到了它带给我们的便利。但是…

python的装饰器(函数装饰器)

作为许多语言都存在的高级语法之一&#xff0c;装饰器是你必须掌握的知识点。 装饰器&#xff08;Decorator&#xff09;&#xff1a;从字面上理解&#xff0c;就是装饰对象的器件。可以在不修改原有代码的情况下&#xff0c;为被装饰的对象增加新的功能或者附加限制条件或者帮…

python装饰器这一篇就够了

前言 什么是装饰器 实现原理 实现效果 适用场景 装饰器&#xff1a; 装饰器的写法 装饰器的拓展 装饰器的模板 什么是装饰器呢&#xff1f; 就是在特定条件下为某些函数再不改动函数体的时候为函数新添加一些功能&#xff0c;这就是装饰器 实现原理&#xff1a; …

【Python】闭包与装饰器

1.闭包 闭包的本质就是函数的嵌套定义&#xff0c;即在函数内部再定义函数 闭包有两种不同的方式&#xff0c;第一种是“返回一个函数名称”&#xff0c;第二种是在函数内部就“直接调用” 闭包的定义&#xff1a;在一个外函数中定义了一个内函数&#xff0c;内函数里运用了…

Python装饰器的通俗理解

看了这篇文章终于搞懂了装饰器&#xff0c;原文有少许错误&#xff0c;但无伤大雅&#xff0c;改正后转载于此&#xff0c;一起学习。 在学习Python的过程中&#xff0c;我相信有很多人和我一样&#xff0c;对Python的装饰器一直觉得很困惑&#xff0c;我也是困惑了好久&#x…

什么是装饰器?

一、引出装饰器概念 引入问题&#xff1a; 定义了一个函数&#xff0c;想在运行时动态的增加功能&#xff0c;又不想改动函数本身的代码&#xff1f; 示例&#xff1a; 希望对下列函数调用增加log功能&#xff0c;打印出函数调用&#xff1a; def f1(x): return x*2 d…

Python自定义装饰器

文章目录 1.闭包2.不带参数的装饰器3.带参数的装饰器4.不定长参数的装饰器5.多重装饰器修饰6.返回值是装饰器7.装饰器类 Python学习笔记—装饰器 装饰器&#xff1a;从生活角度理解&#xff0c;是对一个东西进行装饰&#xff0c;增加它本身的一些功能和内容&#xff1b; Python…

Python的装饰器

前言&#xff1a; &#x1f921; 作者简介&#xff1a;我是Morning&#xff0c;计算机的打工人&#xff0c;想要翻身做主人 &#x1f648; &#x1f648; &#x1f648; &#x1f3e0; 个人主页&#xff1a;Morning的主页 &#x1f4d5;系列专栏&#xff1a;&#…

装 饰 器

一&#xff0c;装饰器概念 装饰器本质上还是函数&#xff0c;让其它的函数在不做任何代码修改的情况下&#xff0c;增加额外的功能 所以说一句话&#xff1a;还是函数&#xff0c;记住奥 谈到一个原则&#xff1a;开发封闭原则 概念&#xff1a; 一个以函数作为参数并返回一…

学习TypeScript20(装饰器Decorator)

Decorator 装饰器是一项实验性特性&#xff0c;在未来的版本中可能会发生改变 它们不仅增加了代码的可读性&#xff0c;清晰地表达了意图&#xff0c;而且提供一种方便的手段&#xff0c;增加或修改类的功能 若要启用实验性的装饰器特性&#xff0c;你必须在命令行或tsconfig…