# Development
## Installation
### npm
It is recommended to use npm for installation, which Works better with [webpack](https://webpack.js.org/) packaging tools.
```bash
npm install form-making -S
```
### CDN
Currently, you can get the latest resource from [unpkg.com/form-making](https://unpkg.com/form-making/), just need reference the Js and Css file as below:
```html
```
> It it recommended to lock version if you get the FormMaking via CDN, to prevent you current FormMaking from being affected by incompatible updates.How to lock version please refer to [unpkg.com](https://unpkg.com/).
### Hello world
With the CDN approach we can easily use FormMaking to load form design pages.
```html
```
## Quick start
### Import Element
The component library of element-ui is used in the project, and the 'Element' package needs to be imported when using it. Please refer to the element document for the specific introduction method [Quick Start](https://element.eleme.io/#/zh-CN/component/quickstart)
### Import FormMaking
#### Fully import
```javascript
import FormMaking from 'form-making'
import 'form-making/dist/FormMaking.css'
Vue.use(FormMaking)
```
Note:the style file needs to be imported separately.
#### Partly Import
```javascript
import {
GenerateForm,
MakingForm
} from 'form-making'
import 'form-making/dist/FormMaking.css'
Vue.component(GenerateForm.name, GenerateForm)
Vue.component(MakingForm.name, MakingForm)
/* or
* Vue.use(GenerateForm)
* Vue.use(MakingForm)
*/
```
#### Import ace.js
By default, ace.js is not imported. You need import it by yourself.
```html
```
### Start to Use
#### MakingForm
``` html
```
*You need set the height of the form generator,he default height is 100% based on the parent element.*
For detailed usage of components, please refer to [Components](/docs/component.zh-CN.md)
## Internationalization
Use `vue-i18n@5.x` for multi-language support.
### Language configuration
Supports Simplified Chinese (zh-CN) and English (en-US),the default language is Simplified Chinese (zh-CN),if you want to use English (en-US), configure the parameter as below:
```js
Vue.use(FormMaking, {lang: 'en-US'})
```
If CDN is used for introduction, the configuration is as follows:
```html
```
### Used in multilingual projects
#### compatibility with `vue-i18n@5.x`
```js
import Vue from 'vue'
import Element from 'element-ui'
import FormMaking from 'form-making'
import VueI18n from 'vue-i18n'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
Vue.use(VueI18n)
Vue.locale('zh-CN', {...zhLocale, message: 'hello'})
Vue.locale('en-US', {...enLocale, message: '你好'})
Vue.config.lang = 'zh-CN'
Vue.use(Element)
Vue.use(FormMaking, {lang: 'zh-CN', locale: Vue.locale})
new Vue({
render: h => h(App)
}).$mount('#app')
```
#### compatibility with `vue-i18n@6.x` version or higher
```js
import Vue from 'vue'
import Element from 'element-ui'
import FormMaking from 'form-making'
import VueI18n from 'vue-i18n'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
Vue.use(VueI18n)
const messages = {
'en-US': {
message: 'hello',
...enLocale
},
'zh-CN': {
message: '你好',
...zhLocale
}
}
// Create VueI18n instance with options
const i18n = new VueI18n({
locale: 'zh-CN', // set locale
messages, // set locale messages
})
Vue.use(Element, {
i18n: (key, value) => i18n.t(key, value)
})
Vue.use(FormMaking, {lang: 'zh-CN', i18n})
new Vue({
i18n,
render: h => h(App)
}).$mount('#app')
```
## Plug-in
### Rich text editor
If you need to use a rich text editor, you need to import `vue2-editor`
```js
import VueEditor from "vue2-editor"
Vue.use(VueEditor)
```