我GroovyShell在我的程序中使用"表达式评估器/引擎".它接受两个输入:(a)一个或多个init脚本(b)用户定义的脚本.然后两者在运行时连接成大块脚本(文本)并提供给shell.
String initScripts = getFromDB()
String userScript = getFromUser()
def shell = new GroovyShell()
output = shell.evaluate(initScripts + userScript)
Run Code Online (Sandbox Code Playgroud)
上面的代码将在循环中运行,其中的内容userScript将有所不同.
到目前为止,initScripts仅包含def $yyyy = new Date().format('yyyy')可能在userScript(例如print "$yyyy 001")中引用的变量定义(例如).
有没有更有效的方法呢?(例如重用shell,怎么样?)因为现在它非常慢.
编辑: Groovy是必须的.请不要推荐其他脚本引擎.
编辑:我在想GroovyShell是否可以这样做(伪代码):
def shell = new GroovyShell()
shell.evaluate(initScripts)
for each userScript in DB {
shell.put(userScript )
def result = shell.evaluateThat()
println "Result is $result"
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?(上次我用谷歌搜索它是不可能的,但我希望我错了)
我的一些路线需要外部JS的功能.我不想一次性加载它们,因为这些JS仅在某些路径中需要(例如,/upload需要一些JS用于照片上传,/photos需要另一个JS用于灯箱,/funny需要JS用于动画的东西等).
懒惰加载那些外部JavaScripts的最佳做法是什么?
这些路由可以多次访问(例如,用户可以去/upload,然后/photos再/upload重新)
我有这个代码:
_.templateSettings = {interpolate : /\{\{(.+?)\}\}/g};
var _d = _.template($('#_d').html());
$.get('/foo', function(data) {
$('#output').html(_d(data));
});
Run Code Online (Sandbox Code Playgroud)
并在HTML中:
<div id="_d">
{{name}} {{phone}}
</div>
<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)
/foo返回类似的东西{"name":"joe","phone":"12345"},但有时它没有phone简单的返回{"name":"joe"},这将阻止模板评估,因此没有任何内容被打印出来output.如何使变量可选?
编辑: /foo我无法控制
我想创建一个可以由应用程序本身(无论是“ajax”还是服务器渲染)和其他客户端(例如移动应用程序)调用的 API。我在谷歌搜索“Quasar REST API”时发现的大多数文章都在谈论如何访问外部 API,这不是我的情况。
我的理解是修改src-ssr/extension.js:
module.exports.extendApp = function ({app, ssr}) {
app.get('/api/bla', (req, res) => {
res.send('something')
})
}
Run Code Online (Sandbox Code Playgroud)
并确保port内部src-ssr/index.js:
const
ssr = require('../ssr'),
extension = require('./extension'),
app = express(),
port = process.env.PORT || 8888
Run Code Online (Sandbox Code Playgroud)
匹配中的值quasar.conf.js:
devServer: {
https: false,
open: false,
port: 8888,
},
Run Code Online (Sandbox Code Playgroud)
项目构建并成功运行,但http://localhost:8888/api/bla一直在浏览器中加载。我想念什么?
VectorDrawableCompat 终于进入了SDK 23中的支持库.但它似乎没有用,或者我可能错过了一些东西.
drawable/mypic.xml:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="64dp"
android:width="64dp"
android:viewportHeight="600"
android:viewportWidth="600" >
<group
android:name="rotationGroup"
android:pivotX="300.0"
android:pivotY="300.0"
android:rotation="45.0" >
<path
android:name="v"
android:fillColor="#000000"
android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
</group>
</vector>
Run Code Online (Sandbox Code Playgroud)
fragment_bla.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/mypic"
android:scaleType="centerCrop" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
此代码适用于Lollipop,但不适用于KitKat.我错过了什么?
例外:
09-06 14:26:53.637 31820-31820/com.bla E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.bla, PID: 31560
android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.ImageView
at android.view.LayoutInflater.createView(LayoutInflater.java:623)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
at …Run Code Online (Sandbox Code Playgroud) TL; DR如何临时禁用View以便我可以安全地加载另一个View,然后安全地关闭加载的View以返回到原始View?
我有以下场景:
/search哪些加载SearchView.SearchView充满了数据,UI被更新以反映出来.SearchView被禁用(只需要禁用events?).ItemView 已加载,显示项目详细信息.ItemView.SearchView 重新启用.实现第5点和第8点的最佳方法是什么?我想调用SearchView.unbind()(第5点)和SearchView.bind()(第8点).
额外奖励:如果解决方案是堆栈式的,那会更好.即视图A加载视图B,可以加载视图C.当视图C关闭时,视图B恢复,等等.
我刚刚开始使用 create-react-app,我发现在控制台中看到 WebSocket 错误很烦人(并且 Chrome 加载指示器显示的时间更长)。也许有一天我会需要 WebSocket,但现在我只想禁用它。我怎么做?
我需要创建一个位于TextFormFields旁边的自定义小部件,因此我必须设置其标签的样式以匹配TextFormField的标签样式。
这不起作用:
Theme.of(ctx).inputDecorationTheme.labelStyle
Run Code Online (Sandbox Code Playgroud)
因为,根据其文档:
如果为 null,则默认为从输入字段的基本 [TextStyle] 和当前 [Theme] 派生的值。
问题是,我不知道如何获得这种基本风格。
我有以下几点TextField:
TextField(
decoration: InputDecoration(
labelStyle: TextStyle(
color: I_WANT_TO_CHANGE_THIS,
),
labelText: widget.label,
),
);
Run Code Online (Sandbox Code Playgroud)
如何更改颜色,以便当它位于文本字段内(提示)时为灰色,而当它浮动在文本字段上方(被聚焦)时为黑色。
我有一条路线/authenticated/page,只有用户登录后才能查看。
go_router 的官方重定向示例展示了如何执行此类“登录门”,但它重定向到/.
重定向(例如登录)后如何恢复导航?IE:
\n/\xe2\x86\x92 单击链接到/authenticated/page\xe2\x86\x92 被登录页面阻止 \xe2\x86\x92 成功登录 \xe2\x86\x92 打开/authenticated/page
flutter ×3
javascript ×2
android ×1
angularjs ×1
backbone.js ×1
groovy ×1
groovyshell ×1
reactjs ×1
templates ×1
vue.js ×1
websocket ×1